想知道是否可以使用PHP通过邮件调用函数。通过邮件调用函数
例如,假设我有一个像应用程序一样的ebay并且已经为此配置了一个邮件帐户。所以当用户用邮件正文发送带有单词“iPod”的邮件时,立即会调用我应用程序中的一个函数,将iPod的规格邮寄给用户。
任何粗略的想法我该如何去实现这?
更新: 发回邮件不是问题,可以很容易地实现。我无法弄清楚前一部分的做法。我怎么知道我收到了一封邮件 - 就是我被卡住了。
想知道是否可以使用PHP通过邮件调用函数。通过邮件调用函数
例如,假设我有一个像应用程序一样的ebay并且已经为此配置了一个邮件帐户。所以当用户用邮件正文发送带有单词“iPod”的邮件时,立即会调用我应用程序中的一个函数,将iPod的规格邮寄给用户。
任何粗略的想法我该如何去实现这?
更新: 发回邮件不是问题,可以很容易地实现。我无法弄清楚前一部分的做法。我怎么知道我收到了一封邮件 - 就是我被卡住了。
据我所知,theres没有开箱即用的功能来做到这一点。你需要做的是编写一个连接到你的邮件服务器的脚本,并加载所有新的邮件(这肯定是由其他人完成的,试着问谷歌)。之后,解析邮件,寻找关键字,如“iPod”,并发回邮件给用户(basicalls使用mail,但tjere有很多更好的软件包在那里(寻找“sendmail”),如果您发送更好的表现大量邮件(PHP的邮件()连接和断开连接,以用于每邮件发送的邮件服务器))
通常的解决方案是结合使用工具如procmail与SMTP服务器有条件地过滤传入消息到您的脚本。
例如,这会将特定大小的所有电子邮件推送到程序spamc
。
:0fw
* < 512000
| spamc
是的,你可以这样做。我离专家很远,但我已经成功完成了,这是我的理解。
您正在查找的关键字是IMAP和POP。几乎所有的电子邮件提供商都有POP,并且其中大多数也都有IMAP。这些只是将收件箱中的邮件传输到脚本的方法。 IMAP显然更好。
在PHP
使用IMAPphp.ini
启用,取消对IMAP扩展然后,您可以使用此示例字符串进行连接。这个是针对GMail的,但对于其他供应商来说并没有太大差别:
$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = '[email protected]';
$password = 'yourpassword';
//========== Open mails in inbox as imap datastream
$imapStream = imap_open($hostname,$username,$password)
or die('Cannot connect to gmail:<br />'.imap_last_error());
这是最难的部分,但它并不算太差。
然后,您可以使用imap_search()
函数来过滤来自流的消息。 PHP imap函数集非常易于使用,但需要几个小时或几天才能理解所有内容(或多或少)。
获取一条信息的主体,例如,你在上面的代码,其中$i
是从imap_search()
结果的消息数使用
imap_fetchbody($imapStream,$i,1.1)
。然后,搜索你的字符串。如果找到,请激活您的功能。
要测试您是否收到邮件,可以按特定间隔轮询收件箱。