email — PHP mail () — показывает больше адресов в & quot; Кому & quot; поле, чем на самом деле отправляются

Я работаю над своего рода сервером рассылки и использую функцию PHP mail (). Я пытаюсь найти способ, чтобы получатель мог видеть несколько адресов в поле To: без фактической отправки PHP по этим адресам. Например:

  • список адресов электронной почты «[email protected]» следует пересылать по адресам «[email protected]» и «[email protected]»

  • электронное письмо от физического лица отправляется на «[email protected]» и «[email protected]»

  • сервер списков получает электронное письмо по адресу «[email protected]» и хочет переслать его соответствующим образом

  • когда Джон и Мэри получают переадресованное письмо в своих почтовых ящиках, в поле «Кому:» должно отображаться, что оно было отправлено на «[email protected]» и «[email protected]»

Поэтому мой вопрос заключается в том, как я могу заставить почтовую функцию PHP отправлять электронные письма ТОЛЬКО на «[email protected]» и «[email protected]», но НЕ на «[email protected]», при этом показывая «jack» @ agency.org «в поле» Кому: «в электронном письме, которое получают Джон и Мэри?

Могу ли я установить какой-либо заголовок, который будет показывать адрес в поле «Кому:», но не будет отправлять его по этому адресу?

РЕДАКТИРОВАТЬ: существующий код будет что-то вроде этого:

$to = "To: [email protected], [email protected]";
$from = "From: [email protected]";
$new_headers = $to."\r\n".$from."\r\n"."Bcc: [email protected], [email protected]"."\r\n";

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

Это работает и пересылает его Джону и Мэри соответственно, но «[email protected]» получит две копии электронного письма (одну от оригинального отправителя и одну от переадресованной копии).

0

Решение

Насколько мне известно, нет никакого способа не отправить сообщение кому-либо из перечисленных в качестве получателя, если вы не используете что-то вроде постфикс.

Однако вы должны быть в состоянии сделать что-то вроде изменения /etc/mail/address.resolve файл, или если это не работает или не существует, другой вариант может быть изменить фактическое /etc/hosts файл, чтобы он думал example.org указывает на тот же IP-адрес, что и localhost:

::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
0

Другие решения

Я нашел решение. Вместо использования PHP mail() функция, я использовал exec() функция для вызова sendmail из командной строки. С sendmail вы можете указать разные заголовки: и envelope-to :. Таким образом, код будет выглядеть примерно так:

$message = "To: [email protected], [email protected]\r\nFrom: [email protected]\r\nSubject: subject line\r\n\r\n message content here";

exec("/usr/bin/sendmail [email protected] [email protected] <<< ".escapeshellarg($message));

Тогда он на самом деле доставляется только по адресам «[email protected]» и «[email protected]», но им кажется, что он был отправлен по адресам «[email protected]» и «[email protected]».

0

По вопросам рекламы [email protected]