我最近不得不移动服务器。在旧服务器上,我有一个 Mailman listserv 分发列表,但由于新服务器不支持 Mailman,我编写了一个 PHP 脚本来从 IMAP 读取消息并通过 SMTP 重新发送。该脚本很脆弱(我的错)且复杂(不是我的错):我必须解析每条消息,找到我可以使用的位(如果它是多部分或 HTML 或有附件),然后为 SMTP 重建消息,以便除发件人之外的每个成员都获得一个副本,并且回复是通讯组列表地址。问题是,我知道消息的原始来源本身就很好。我只需要更改/添加一些标题。
在 Windows 服务器上,您可以配置电子邮件保管箱文件夹,您可以在其中保存原始形式的外发邮件消息。 *nix 上有类似的东西吗?我还应该看看其他方法吗?
我知道我可以在服务器上设置转发器地址,但我真的很喜欢列表服务系统的行为:发件人不会获得自己邮件的副本,主题由列表的标签标识,点击“回复”会将邮件发送回通讯组列表,而不是原始发件人。
最佳答案
为了创建您自己的定制列表服务器系统,您需要执行以下操作:
将您的邮件服务器配置为具有别名(例如 no-reply@yourdomain.com),以将邮件重定向到黑洞或/dev/null或类似的东西,基本上在到达时删除所有邮件,而不向发件人返回 NDR(未送达报告)电子邮件。这是您的脚本在发送到群组时在电子邮件的收件人: header 中使用的地址。
以如下方式编写发送到组的 PHP 脚本部分:(a) 首先将所有订阅者从数据库(或安全存储的数据文件)中提取到数组中,(b) 接下来从数组中删除消息作者的地址,(c) 最后以大约 15 个收件人为批处理循环遍历数组中的所有剩余订阅者,并使用
To: "Your List Name" <no-reply@yourdomain.com
使用 mail() 函数发送消息。以及密件抄送:(密件抄送)字段,以防止收件人看到列表中还有其他人。
如果您想尝试一些现有的解决方案,为什么不看看 Majordomo .
关于php - 将电子邮件转发到通讯组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2917766/