我已经在我的PHP Web应用程序中设置了一个电子邮件ID。用户将向此ID发送电子邮件。
我想在应用程序中处理这些电子邮件。我该怎么做呢?
提前致谢。
答案 0 :(得分:49)
我最近参与了一个项目,该项目需要从gmail解析电子邮件,并根据电子邮件的内容使用某些值更新数据库。我使用 ezcMail (now) Zeta Components库连接到邮件服务器并解析电子邮件。
我采用的策略是使用“未处理”标签过滤所有有趣的传入邮件。每15分钟通过crontab运行PHP脚本。该脚本将连接到邮件服务器并打开IMAP未处理文件夹并解析每封电子邮件。将有趣的值插入数据库后,脚本将文件移动到另一个IMAP文件夹“Proccessed”。
我还发现 IMAP优于POP 进行此类处理。
答案 1 :(得分:15)
最近我希望能够立即接收我正在制作的电子邮件,所以我做了一些研究(我实际上也在这里查看这个问题)并且我最终发现Google App Engine非常有帮助。它有一个api,您可以使用它来接收和处理发送到____@yourapp.appspotmail.com
的电子邮件。我知道它似乎没有用,因为您可能不希望App Engine上的应用程序,并且您希望在yourdomain.tld接收电子邮件,但只需稍加设置就可以得到您想要的内容。
我的基本设置是这样的:
所以基本上你可以制作一个小GAE应用,就像抓住电子邮件一样。即使使用重定向,它也能正常运行,电子邮件也没问题。
此外,我决定向我学习一些django,我制作了一个名为Emailization的免费应用程序,基本上会为你做这个。您创建一个收件人,如___@emailization.com
,并提供POST到的URL。发送到该地址的任何内容都会发送到您的URL。您可以在您的域名上收集转发给该电子邮件收件人的邮件,您也可以通过邮件收到电子邮件!
或者你可以看到我制作的small GAE app你可以自己设置做同样的事情。
希望能帮助别人!
答案 2 :(得分:14)
如果您的系统上安装了procmail,请使用它。将这些行放在收到电子邮件的用户的主目录中的.procmailrc文件中。
:0
| /path/to/your/script.php
或者您也可以使用包含
的.forward文件"|/path/to/your/script.php"
Procmail的优势在于,如果您的应用程序需要,它可以让您处理更复杂的过滤。
您的script.php文件将从stdin读取电子邮件的标题和正文。
答案 3 :(得分:7)
结帐fMailbox。它不需要任何非标准扩展(例如imap),并且已经过各种服务器,附件,多部分消息,SSL等测试。
答案 4 :(得分:6)
我建议使用Zend Framework的Zend_Mail组件。
答案 5 :(得分:4)
有一个很棒的图书馆:试试这个:http://code.google.com/p/php-imap
答案 6 :(得分:3)
您需要在Php中实施电子邮件客户端。这可能是POP客户端。
此代码将查询包含您的电子邮件的POP服务器,下载它,然后您可以根据需要解析它。
快速谷歌搜索“POP客户端php”已经发现了大量不同的选项。很难说它是否真的是“The One True PHP POP Library”,否则我会把它包含在这里。如果您使用的是预先存在的框架,您可能希望检查其POP支持级别,否则请检查上面的Google搜索结果并选择。或者它可能只是最简单(也是最有教育意义的:))推出自己的。
答案 7 :(得分:2)
有许多托管解决方案可以接受您域中的电子邮件,然后在您的网站上发布脚本。其中大部分将处理为您解析消息(分离附件,“到”“从”和其他地址等)。
您只需创建一个接收FORM POST的脚本,并根据需要执行任何操作。
您还可以查看Mandrill(通过MailChimp),SendGrid和PostMarkApp。
答案 8 :(得分:2)
这里有一个很棒的教程:
http://www.evolt.org/incoming_mail_and_php
介绍如何将电子邮件直接转发到您的脚本,您的脚本通过stdin(fopen,fread等)读取该脚本。教程代码甚至可以为您执行标题/正文的基本解析。
答案 9 :(得分:2)
托管解决方案Travis Austin建议运作良好。
如果您正在寻找一个自托管的,您可以查看Mailin模块,允许您接收电子邮件,解析它们并将它们发布到您选择的webhook。它还会检查dkim和spf,计算spamassassin得分并确定消息语言。
我不知道它是否适合您的需求,因为它是用node.js编写的,但是你拥有的选项越多越好。 (免责声明:我是Mailin的维护者)
答案 10 :(得分:1)
如果您想避免通过POP或IMAP到另一台服务器来下载电子邮件,您可以在您设置的某个SMTP服务器上的电子邮件接收过程中添加“挂钩”(可能是相同的php服务器) 。然后只需让此服务器处理目标电子邮件。
以下是postfix的示例,但sendmail也可以使用类似的功能 http://www.adkap.com/autoresponder.html