通过邮件调用功能

时间:2011-01-14 06:21:40

标签: php email

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

例如。假设我有一个类似ebay的应用程序,并为此配置了一个邮件帐户。因此,当用户发送一封邮件,上面写着带有“iPod”字样的邮件正文时,我的应用程序中的某个函数会被立即调用,然后将iPod的规格邮寄给用户。

任何粗略的想法我该如何实现这个目标?

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

3 个答案:

答案 0 :(得分:1)

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

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

:0fw
* < 512000
| spamc

答案 1 :(得分:0)

据我所知,没有开箱即用的功能。你要做的就是编写一个连接到你的邮件服务器并加载所有新邮件的脚本(这绝对是由其他人完成的,试着去问谷歌)。在解析邮件之后,寻找像“iPod”这样的关键字并将邮件发回给用户(使用mail的basicalls,但是tjere是很多更好的包(寻找“sendmail”),表现更好如果您发送大量邮件(php-mail()连接并断开连接到每个邮件发送的邮件服务器))

答案 2 :(得分:0)

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

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

在PHP中使用IMAP

  • 首先确认您的提供商支持
  • 确保在您的帐户设置中启用
  • php.ini中,取消注释imap扩展名
  • 也取消注释SSL扩展名。

然后,您可以使用此示例字符串进行连接。这是GMail的一个,但对其他提供商来说并没有太大的不同:

$hostname = '{imap.gmail.com:993/imap/ssl}INBOX';
$username = 'youraccount@gmail.com';
$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函数集非常易于使用,但需要几个小时或几天才能理解所有内容(或多或少)。

例如,要获取消息正文,请使用

imap_fetchbody($imapStream,$i,1.1)

在上面的代码中,$iimap_search()结果中的消息编号。然后,搜索你的字符串。如果找到,请解雇您的功能。

要测试您是否收到了邮件,可以按照一定的时间间隔轮询收件箱。