Notes
Что делать когда письма попадают в спам?
В рунете более половины отправляемых писем являются спамом, в связи с этим почтовые стараются как можно лучше их фильтровать.
чтобы письмо не попадало в спам нужно проверить настройки домена SPF, DKIM, DMARK и значение php.ini "sendmail_path".
1. sendmail_path должен иметь значение реальной почты сайта с которого отправляется письмо. Пример настройки php.ini с использованием разделов HOST и PATH(для многосайтовости):
[HOST=mysite.ru] sendmail_path = "/usr/sbin/sendmail -t -i -f info@mysite.ru " [PATH=//var/www/u0382107/data/www/mysite.ru] sendmail_path = "/usr/sbin/sendmail -t -i -f info@mysite.ru "
2. Добавить SPF-Запись в настройки DNS домена:
mysite.ru TXT v=spf1 ip4:37.140.192.21 a mx include:_spf.hosting.reg.ru include:_spf.yandex.net ~all Текущие SPF записи нужно будет удалить.
3. DMARC:
добавьте TXT запись на ваш домен _dmarc.mysite.ru со следующим значением:
v=DMARC1; p=none
4. DKIM:
Для создания этой записи нужно сначала сгенерировать RSA-ключ. Описано тут: https://habr.com/ru/post/322616/
(но если вы не собираетесь заниматься спамом и уже сделали первые 2 пункта тогда это не обязательно)
Указанные выше примеры кода предназначены для хостинга REG.ru и сервиса яндекс ПДД. В вашем случае настройки могут отличаться.
Если у вас битрикс то можно дополнительно включить логирование отправки писем вместе со служебными заголовками:
в init.php добавить функцию:
function custom_mail($to,$subject,$body,$headers) { $f=fopen($_SERVER["DOCUMENT_ROOT"]."/maillog.txt", "a+"); fwrite($f, print_r(array('TO' =--> $to, 'SUBJECT' => $subject, 'BODY' => $body, 'HEADERS' => $headers),1)." ======== "); fclose($f); return mail($to,$subject,$body,$headers); }
Leave a reply