php - 将电子邮件转发到通讯组列表

标签 php linux email sendmail

我最近不得不移动服务器。在旧服务器上,我有一个 Mailman listserv 分发列表,但由于新服务器不支持 Mailman,我编写了一个 PHP 脚本来从 IMAP 读取消息并通过 SMTP 重新发送。该脚本很脆弱(我的错)且复杂(不是我的错):我必须解析每条消息,找到我可以使用的位(如果它是多部分或 HTML 或有附件),然后为 SMTP 重建消息,以便除发件人之外的每个成员都获得一个副本,并且回复是通讯组列表地址。问题是,我知道消息的原始来源本身就很好。我只需要更改/添加一些标题。

在 Windows 服务器上,您可以配置电子邮件保管箱文件夹,您可以在其中保存原始形式的外发邮件消息。 *nix 上有类似的东西吗?我还应该看看其他方法吗?

我知道我可以在服务器上设置转发器地址,但我真的很喜欢列表服务系统的行为:发件人不会获得自己邮件的副本,主题由列表的标签标识,点击“回复”会将邮件发送回通讯组列表,而不是原始发件人。

最佳答案

为了创建您自己的定制列表服务器系统,您需要执行以下操作:

  1. 将您的邮件服务器配置为具有别名(例如 no-reply@yourdomain.com),以将邮件重定向到黑洞/dev/null或类似的东西,基本上在到达时删除所有邮件,而不向发件人返回 NDR(未送达报告)电子邮件。这是您的脚本在发送到群组时在电子邮件的收件人: header 中使用的地址。

  2. 以如下方式编写发送到组的 PHP 脚本部分:(a) 首先将所有订阅者从数据库(或安全存储的数据文件)中提取到数组中,(b) 接下来从数组中删除消息作者的地址,(c) 最后以大约 15 个收件人为批处理循环遍历数组中的所有剩余订阅者,并使用 To: "Your List Name" <no-reply@yourdomain.com 使用 ma​​il() 函数发送消息。以及密件抄送:(密件抄送)字段,以防止收件人看到列表中还有其他人。

如果您想尝试一些现有的解决方案,为什么不看看 Majordomo .

关于php - 将电子邮件转发到通讯组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2917766/

相关文章:

php - 您无权在 CentOS7 VPS 服务器中访问此服务器上的/phpMyAdmin

linux - 如何在启动时执行其他所有内容后执行命令?

linux - Linux kernel panic call tr​​aces中的问号 '?'是什么意思?

email - 如何在 CF9 中使用 cfscript 发送带有附件的电子邮件?

php - phalcon - 通过循环插入数据不起作用

php - 如何在 php 中检查字符串是否包含 { 和 } 等特殊字符

php - Symfony2 : error trying to send an email with Swiftmailer

json - 使用 jq 更新 JSON 文件时缺少内容

php - 电子邮件帮助 - php mail() 或 SMTP

email - Wordpress - 联系表格 7 未发送到某些电子邮件