如何接收电子邮件并在Web应用程序中处理
我已经build立了一个电子邮件ID我的PHP Web应用程序。 用户将发送电子邮件到这个ID。
我想在应用程序中处理这些电子邮件。 我该怎么做?
提前致谢。
我最近从事一个项目,需要根据电子邮件的内容分析来自gmail的电子邮件和更新数据库的某些值。 我使用ezcMail (现在的)Zeta Components库连接到邮件服务器并parsing邮件。
我采用的策略是用“未处理”标签过滤所有感兴趣的传入邮件。 每15分钟通过一个crontab运行PHP脚本。 该脚本将连接到邮件服务器并打开IMAP未处理的文件夹并parsing每封电子邮件。 将有趣的值插入数据库后,脚本将文件移动到另一个IMAP文件夹“Proccessed”。
我也发现IMAP比POP更适合这种处理。
如果您的系统上安装了procmail,请使用它。 将这些行放在收到电子邮件的用户的主目录中的.procmailrc文件中。
:0 | /path/to/your/script.php
或者你也可以使用包含一个.forward文件
"|/path/to/your/script.php"
Procmail的优点是,如果您的应用程序需要它,它可以让您处理更复杂的过滤。
你的script.php文件将从标准input读取电子邮件的标题和正文。
最近我希望能够立即收到电子邮件,所以我做了一些研究(实际上我也在这里看到这个问题),最后我发现Google App Engine非常有帮助。 它有一个API可以用来接收和处理发送到____@yourapp.appspotmail.com
电子邮件。 我知道这似乎不是很有用,因为你可能不希望你的App Engine上的应用程序,而你想在yourdomain.tld接收电子邮件,但有一点设置,你可以得到你想要的。
我的基本设置是这样的:
- 用户将电子邮件发送到user_id@mydomain.tld(实际上不存在的电子邮件地址)
- mydomain.tld有一个catchall电子邮件地址,转发到inbox@GAEapp.appspotmail.com
- GAEapp(应用程序引擎上的一个小应用程序)接收电子邮件,处理它,并发送一个相关的东西发布到mydomain.tld
所以基本上你可以制作一个小型的GAE应用程序,就像是去抓电子邮件一样。 即使redirect,它会好起来的,电子邮件会没事的。
此外,我决定学习我一些Django的,我做了一个免费的应用程序称为电子邮件 ,基本上会为你做。 您创build一个收件人,如___@emailization.com
并提供一个URL到POST。 发送到该地址的任何内容都会被发送到您的URL。 你可以在你的域名上发送邮件给那个邮件收件人,你也可以通过邮件收到邮件!
或者你可以看到一个小的GAE应用程序,我可以设置自己做同样的事情。
希望帮助别人!
退房fMailbox 。 它不需要任何非标准的扩展(如imap),并已经过各种服务器,附件,多部分消息,SSL等的testing。
我build议使用Zend Framework的Zend_Mail组件。
有一个伟大的图书馆:试试这个: http : //code.google.com/p/php-imap
你需要在PHP中实现一个电子邮件客户端。 这可能是一个POP客户端。
该代码将查询包含您的电子邮件的POP服务器,下载它,然后您可以根据需要parsing它。
快速谷歌search“POP客户端PHP”已经透露了大量不同的选项。 它很难说是否真的有“一个真正的PHP POP库”,否则我会在这里包括它。 如果您使用的是预先存在的框架,您可能希望查看其支持的POP级别,否则请检查上面的Google结果并select。 或者它可能只是最简单的(和最教育:))推出自己的。
有一些托pipe的解决scheme将接受您的域的电子邮件,然后在您的网站上发布一个脚本。 其中大多数将处理你的消息parsing(分离附件,“”从“和其他地址等)。
您只需创build一个接收FORM POST的脚本,并根据需要执行任何操作。
- Mailgun
- CloudMailin
您还可以看看Mandrill(MailChimp),SendGrid和PostMarkApp。
这里有一个很好的教程:
http://www.evolt.org/incoming_mail_and_php
其中涵盖了如何让电子邮件直接转发到您的脚本,您的脚本通过标准input(fopen,fread等)读取教程代码甚至为您做标题/正文的基本parsing。
作为特拉维斯奥斯汀的托pipe解决schemebuild议工作。
如果你正在寻找一个自我托pipe的,你可以看看Mailin模块允许你接收电子邮件,parsing它们,并将它们发布到你select的webhook。它还检查dkim和spf,计算spamassassin得分并确定消息的语言。
我不知道它是否会满足您的需求,因为它是用node.js编写的,但是您拥有的选项越多越好。 (免责声明:我是Mailin的维护者)
如果您想避免通过POP或IMAP到另一台服务器来下拉电子邮件,您可以在设置的某个SMTP服务器(可能是相同的PHP服务器)上的电子邮件接收进程中添加一个“挂钩”。 然后只需要由这个服务器处理目标电子邮件。
这里是一个使用postfix的例子,但是sendmail也可以做类似的事情。
http://www.adkap.com/autoresponder.html