2011-01-14 19 views
1

想知道是否可以使用PHP通过邮件调用函数。通过邮件调用函数

例如,假设我有一个像应用程序一样的ebay并且已经为此配置了一个邮件帐户。所以当用户用邮件正文发送带有单词“iPod”的邮件时,立即会调用我应用程序中的一个函数,将iPod的规格邮寄给用户。

任何粗略的想法我该如何去实现这?

更新: 发回邮件不是问题,可以很容易地实现。我无法弄清楚前一部分的做法。我怎么知道我收到了一封邮件 - 就是我被卡住了。

回答

0

据我所知,theres没有开箱即用的功能来做到这一点。你需要做的是编写一个连接到你的邮件服务器的脚本,并加载所有新的邮件(这肯定是由其他人完成的,试着问谷歌)。之后,解析邮件,寻找关键字,如“iPod”,并发回邮件给用户(basicalls使用mail,但tjere有很多更好的软件包在那里(寻找“sendmail”),如果您发送更好的表现大量邮件(PHP的邮件()连接和断开连接,以用于邮件发送的邮件服务器))

1

通常的解决方案是结合使用工具如procmail与SMTP服务器有条件地过滤传入消息到您的脚本。

例如,这会将特定大小的所有电子邮件推送到程序spamc

:0fw 
* < 512000 
| spamc 
0

是的,你可以这样做。我离专家很远,但我已经成功完成了,这是我的理解。

您正在查找的关键字是IMAP和POP。几乎所有的电子邮件提供商都有POP,并且其中大多数也都有IMAP。这些只是将收件箱中的邮件传输到脚本的方法。 IMAP显然更好。

在PHP

使用IMAP
  • 首先确认您的供应商支持的话
  • 确保它在您的帐户设置
  • php.ini启用,取消对IMAP扩展
  • 也取消对SSL扩展。

然后,您可以使用此示例字符串进行连接。这个是针对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) 

。然后,搜索你的字符串。如果找到,请激活您的功能。

要测试您是否收到邮件,可以按特定间隔轮询收件箱。