使用 PHP 脚本处理所有传入的 e-mails

Process ALL incoming e-mails with PHP script

对于我现在正在进行的项目,我希望用户能够将 e-mails 发送到 username@sub.domain.com。那些 e-mails 或更具体地说所有 e-mails 发送到 sub.domain.com 应由 PHP 脚本处理。

在该脚本中,我需要能够获取用户名(@ 前面的部分)以及 e-mail header & body.

  1. 是否可以在不事先为每个用户设置 e-mail 别名的情况下做到这一点?

  2. 有没有办法在 e-mail 到达时 运行 脚本?或者我是否必须 运行 一个 cron 作业来定期检查?我不介意脚本是否可以通过网络访问。

  3. 根据我目前所读的内容,我认为我必须为此使用 IMAP 或 POP3,对吗?我对他们中的任何一个都没有经验。哪个更适合这个用例?

  4. 这样做还有什么要注意的吗?假设我可以完全控制服务器并且可以更改和安装任何必要的东西。

提前致谢:)

编辑:@Dagon 提到将 e-mail 通过管道传输到脚本作为 #3 的替代方法。如何?我以前从来没有做过这样的事情。

Edit2:我只想将一个 PHP 脚本挂接到所有传入的 e-mails。是不是太宽泛了?

  1. 您应该可以将@sub.domain.com别名为一个邮箱,并且邮件的发件人:header将包含用户名。

  2. 您需要将脚本 运行ning 或 运行 脚本保存在 cron 作业中。 e-mail 的到来无法在不引入额外的、不必要的复杂性的情况下将脚本触发到 运行。

  3. 您最好使用 IMAP,我认为,字面上只是因为现有的 PHP IMAP 库比 POP 库要好。总的来说,POP无论如何都是一个劣等协议。

  4. 您可能希望使用用户名以外的其他内容作为电子邮件地址,例如链接到用户名的随机字符串。否则,如果您知道某人的用户名,您可以将他们冒充到 PHP 脚本中。