【问题标题】:PHP mail() - showing more addresses in "To" field than are actually sent toPHP mail() - 在“收件人”字段中显示比实际发送到的地址更多的地址
【发布时间】:2016-02-02 18:39:22
【问题描述】:

我正在开发一个列表服务器,我正在使用 PHP 的 mail() 函数。我试图找出一种方法让收件人在 To: 字段中看到多个地址,而不用 PHP 实际发送到这些地址。例如:

  • 电子邮件列表“webmasters@company.com”应转发至“john@company.com”和“mary@company.com”

  • 个人向“jack@agency.org”和“webmasters@company.com”发送了一封电子邮件

  • 列表服务器收到“webmasters@company.com”的电子邮件,并希望适当地转发它

  • 当约翰和玛丽在他们的收件箱中收到转发的电子邮件时,“收件人:”字段应显示它已发送至“jack@agency.org”和“webmasters@company.com”

所以我的问题是,我怎样才能让 PHP 的邮件功能实际仅向“john@company.com”和“mary@company.com”发送电子邮件,而不是“jack@agency.org”,同时仍然在约翰和玛丽收到的电子邮件的“收件人:”字段中显示“jack@agency.org”?

我是否可以设置某种标头,以在“收件人:”字段中显示地址,但实际上不会将其发送到该地址?

编辑:现有代码将是这样的:

$to = "To: jack@agency.org, webmasters@company.org";
$from = "From: bob@customer.ca";
$new_headers = $to."\r\n".$from."\r\n"."Bcc: john@company.org, mary@company.org"."\r\n";

mail("","Subject Here","message here", $new_headers);

这样可以正常工作并将其转发给 John 和 Mary,但“jack@agency.org”将收到两份电子邮件副本(一份来自原始发件人,一份来自转发的副本)。

【问题讨论】:

  • 亲爱的 Jordan,到目前为止,你有哪些不错的、新鲜的、希望很棒的代码?否则它有点在黑暗中戳...
  • @Jan 添加了一些我一直在使用的代码

标签: php email email-headers


【解决方案1】:

我想出了一个解决方案。我没有使用 PHP 的 mail() 函数,而是使用 exec() 函数从命令行调用 sendmail。使用 sendmail,您可以指定不同的 to: 和信封-to: 标头。所以代码看起来像这样:

$message = "To: jack@agency.org, webmasters@company.com\r\nFrom: bob@customer.ca\r\nSubject: subject line\r\n\r\n message content here";

exec("/usr/bin/sendmail john@company.com mary@company.com <<< ".escapeshellarg($message));

然后它实际上只发送到“john@company.com”和“mary@company.com”,但对他们来说,它看起来像是发送到“jack@agency.org”和“webmasters@company.com” ”。

【讨论】:

    【解决方案2】:

    据我所知,没有办法向列为收件人的人发送消息,除非您使用的是 Postfix 之类的东西。

    但是,您应该能够执行诸如更改 /etc/mail/address.resolve 文件之类的操作,或者如果这不起作用或不存在,则另一种选择可能是更改实际的 /etc/hosts 文件,以便它认为 @987654324 @指向与localhost相同的IP地址:

    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    127.0.0.1 localhost example.org
    

    【讨论】:

    • 如果我想将其实际发送到“name1@example.com”,并且在“收件人:”字段中显示“name2@example.com”而不实际接收,我该怎么做它?如果我编辑解析文件以将该域链接到错误的地址,那么即使是应该收到它的人也不会。
    猜你喜欢
    • 2016-04-07
    • 2012-04-23
    • 2016-04-07
    • 2016-05-28
    • 1970-01-01
    • 2020-11-28
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多