У меня есть около 6 сайтов на моем выделенном сервере (под управлением centos5), и все электронные письма, отправленные с использованием почтовой функции php, отправляются никем@servername.hostname.com, например. «Получено: ни от кого от имени сервера.hostname.com с локального (Exim 4.69)». Есть ли способ изменить это, чтобы показать соответствующий домен?
Из Руководство по PHP для mail()
:
Примечание. При отправке почты сообщение должно содержать заголовок «От». Это может быть установлено с помощью параметра additional_headers, или значение по умолчанию может быть установлено в php.ini.
Как и большинство настроек php.ini, это можно переопределить в конфигурации vhost на Apache или через .htaccess, или его можно установить в скрипте (необязательно с помощью auto_prepend), а с версии 5.3.0 через .user.ini файлы. Но вместо того, чтобы явно указывать заголовки From, Reply-To и Return-path, проще просто указать получателя при вызове программы sendmail для обработки сообщения.
Предполагая, что exim использует стандартные флаги в командной строке для своего cli sendmail:
в php.ini:
sendmail_path = "/usr/sbin/sendmail -ffrom@example.com -t -i"
В httpd.conf
php_admin_value sendmail_path "/usr/sbin/sendmail -ffrom@example.com -t -i"
В .htaccess.conf
php_value sendmail_path "/usr/sbin/sendmail -ffrom@example.com -t -i"
(обратите внимание, что ваш путь sendmail может отличаться от показанного)
С.
Вы можете использовать скрипт-оболочку, например мой php-secure-sendmail. Он позволяет регистрировать каждое отправленное электронное письмо (виртуальный хост, дата / время, получатель), ограничивать количество отправляемых писем в час / день виртуальным хостом, устанавливать отправителя конверта и многое другое ...
Вы должны использовать опцию -f в почтовая функция php.