Очень часто необходимо сохранять оригинальный адрес отправителя при доставке почты.
Поясню:
1) есть заголовок From - в нем хранится адрес отправителя и все MUA пишут, что письмо от этого пользователя
2) есть т.н. envelope from - адрес, от которого работает LDA/MDA на сервере. Обычно это имя_пользователя_процесса@FQDN
Встала задача доставлять письма именно с оригинальным адресом отправителя (зачем это нужно - отдельная история).
Вот решение в рамках "философии" битрикс - по сути модифицированный bxmail.
Хотя данная ситуация должна рассматриваться в ядре. В идеале - галочка в настройках главного модуля . Что то вроде "Транслировать адрес отправителя в envelope адрес".
З.Ы. - очередные костыли
Поясню:
1) есть заголовок From - в нем хранится адрес отправителя и все MUA пишут, что письмо от этого пользователя
2) есть т.н. envelope from - адрес, от которого работает LDA/MDA на сервере. Обычно это имя_пользователя_процесса@FQDN
Встала задача доставлять письма именно с оригинальным адресом отправителя (зачем это нужно - отдельная история).
Вот решение в рамках "философии" битрикс - по сути модифицированный bxmail.
// Обертка на почтовую функцию function custom_mail($to, $subject, $message, $additional_headers, $additional_parameters) { // Берем из заголовоков и делаем его envelope preg_match_all('/From:(.*)/i',$additional_headers,$found); $original_email_from = ''; $original_email_from = filter_var(trim($found[1][0]), FILTER_VALIDATE_EMAIL); if($additional_parameters!="") return @mail($to, $subject, $message, $additional_headers, $additional_parameters); if ($original_email_from) return @mail($to, $subject, $message, $additional_headers, '-f'.$original_email_from); else return @mail($to, $subject, $message, $additional_headers); } |
З.Ы. - очередные костыли