Очень часто необходимо сохранять оригинальный адрес отправителя при доставке почты.
Поясню:
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);
} |
Хотя данная ситуация должна рассматриваться в ядре. В идеале - галочка в настройках главного модуля . Что то вроде "Транслировать адрес отправителя в envelope адрес".
З.Ы. - очередные костыли