Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在web应用程序中接收和处理电子邮件_Php_Email - Fatal编程技术网

Php 如何在web应用程序中接收和处理电子邮件

Php 如何在web应用程序中接收和处理电子邮件,php,email,Php,Email,我已经为我的PHP web应用程序设置了电子邮件id。用户将向此id发送电子邮件 我想在应用程序中处理这些电子邮件。我该怎么做呢 提前感谢。您需要在Php中实现电子邮件客户端。这可能是一个客户 这段代码将查询包含您的电子邮件的POP服务器,下载它,然后您可以根据需要解析它 在谷歌上快速搜索“POP客户端php”,发现了大量不同的选项。很难说是否真的有“一个真正的PHP POP库”,否则我会把它包括在这里。如果您使用的是一个预先存在的框架,您可能希望查看它的POP支持级别,否则请查看上面的goog

我已经为我的PHP web应用程序设置了电子邮件id。用户将向此id发送电子邮件

我想在应用程序中处理这些电子邮件。我该怎么做呢


提前感谢。

您需要在Php中实现电子邮件客户端。这可能是一个客户

这段代码将查询包含您的电子邮件的POP服务器,下载它,然后您可以根据需要解析它


在谷歌上快速搜索“POP客户端php”,发现了大量不同的选项。很难说是否真的有“一个真正的PHP POP库”,否则我会把它包括在这里。如果您使用的是一个预先存在的框架,您可能希望查看它的POP支持级别,否则请查看上面的google结果并选择。或者它可能是最简单的(也是最有教育意义的:)。

我建议使用Zend Framework的组件。

如果您不想通过POP或IMAP到达另一台服务器来下拉电子邮件,您可以在您设置的某个SMTP服务器(可能是同一台php服务器)上的电子邮件接收过程中添加“钩子”。然后让目标电子邮件由该服务器处理

这是一个postfix的例子,但是sendmail也可以做类似的事情。

我最近参与了一个项目,该项目要求解析来自gmail的电子邮件,并根据电子邮件内容使用特定值更新数据库。我使用该库连接到邮件服务器并解析电子邮件

我采取的策略是用“未处理”标签过滤所有感兴趣的邮件。每隔15分钟通过crontab运行PHP脚本。该脚本将连接到邮件服务器,打开IMAP未处理文件夹并解析每封电子邮件。将感兴趣的值插入数据库后,脚本将文件移动到另一个IMAP文件夹“Processed”


我还发现,对于这种处理方式,IMAP优于POP

如果系统上安装了procmail,请使用它。将这些行放在接收电子邮件的用户的主目录中的.procmailrc文件中

:0
| /path/to/your/script.php
或者也可以使用.forward文件,其中包含

"|/path/to/your/script.php"
Procmail的优点是,如果应用程序需要,它允许您处理更复杂的过滤


您的script.php文件将从stdin读取电子邮件的标题和正文。

签出。它不需要任何非标准的扩展(如imap),并且已经用各种服务器、附件、多部分消息、SSL等进行了测试。

有一个很棒的库:试试这个:

最近我想能够立即收到我正在制作的东西的电子邮件,所以我做了一些研究(实际上,我也是在这里看到这个问题的)最后我发现Google App Engine非常有用。它有一个api,你可以用它来接收和处理发送到
\uuuuuuu@yourapp.appspotmail.com
的电子邮件。我知道它似乎没有什么帮助,因为你可能不想在App Engine上使用你的应用程序,你想在yourdomain.tld上接收电子邮件,但只要稍加设置,你就可以了得到你想要的

我的基本设置如下:

  • 用户向用户发送电子邮件_id@mydomain.tld(实际不存在的电子邮件地址)
  • mydomain.tld有一个catchall电子邮件地址,可转发到inbox@GAEapp.appspotmail.com
  • GAEapp(应用程序引擎上的一个小应用程序)接收电子邮件,处理它,并向mydomain.tld发送一个包含相关内容的post请求
因此,基本上你可以制作一个像中间人一样工作的小GAE应用程序来抓取电子邮件。即使有重定向,它也会工作正常,电子邮件也会很好

我还决定向我学习一些django,我制作了一个名为的免费应用程序,基本上可以为你做到这一点。你可以创建一个像
\u_@emailization.com
这样的收件人,并提供一个可以发布到的URL。发送到该地址的任何内容都会被发布到你的URL。你可以在你的域上制作一个catchall,转发给该电子邮件收件人,然后你就可以发布不要通过catchall发送电子邮件

或者你可以看到一个我做的,你可以设置自己做同样的事情


希望这对其他人有所帮助!

有许多托管解决方案可以为您的域接收电子邮件,然后在您的网站上发布一个脚本。其中大多数解决方案将为您处理邮件解析(将附件、“收件人”“发件人”和其他地址分开,等等)

您只需创建一个脚本来接收表单POST,并根据需要对其执行任何操作


您还可以查看Mandrill(由MailChimp编写)、SendGrid和PostMarkApp。

这里有一个很好的教程:

其中包括如何将电子邮件直接转发到脚本,脚本通过stdin(fopen、fread等)读取。教程代码甚至可以为您完成标题/正文的基本解析。

建议的托管解决方案效果良好

如果您正在寻找自托管邮件,您可以查看该模块,该模块允许您接收电子邮件,解析电子邮件并将其发布到您选择的webhook。它还检查dkim和spf,计算spamassassin分数并确定邮件语言


我不知道它是否适合您的需要,因为它是在node.js中编写的,但是您拥有的选项越多越好。(免责声明:我是Mailin的维护者)

@Shoan我知道这个答案很旧……但是你介意帮我发一些代码吗?@pattyd很遗憾,我已经没有这个代码了。但是用我在大纲中的答案来做应该比较简单。Zeta组件的文档会告诉你如何阅读电子邮件。@pattyd这不是你在StackOverflow上要求的东西。The
Ask Question
按钮是…@Bojangles,我只是在检查…即使我使用了神秘的“Ask Question”按钮,你也可能会将其标记为重复按钮!@pattyd可能不会,但前提是