Общее

Nginx

Панель управления

Почта

SSH/FTP

Серверы

Разработка

Оплата

Домены

Проблема при отправке писем функцией mail()

Многи сайты для отправки писем используют стандартную функцию mail(), но это иногда оборачивается проблемой с доставкой таких писем. Основная причина, это проблема фильтров антиспама.

Современные сервера настроены таким образом, что отправляя письмо через функцию mail(), в заголовки письма добавляется информация, по которой очевидно, что почта была отправлена с помощью mail() с системного ящика с нашего сервера.
Вот этого и не любят фильтры антиспама на стороне получателя. Не все конечно, но если фильтр настроен жестко, то скорее всего такое письмо будет удалено фильтром на стороне получателя.

Предположим, что вы пытаетесь отправить письмо с ящика test@gmail.com на father@mail.ru. При отправке функцией mail php скрипт инициирует взаимодействие с нашим почтовым сервисом и добавляет в очередь письмо со следующими служебными заголовками:

envelope-from 
Received: from server.elastictech.org
From: test@gmail.com

Наш сервер не обслуживает gmail, и на этой элементарной проверке ваши письма отсеиваются. Иными словами, вы можете пытаться отправить письма и с ящика billy@microsoft.com, но они не будут получены вашим адресатом, т.к. это Спуфинг (e-mail spoofing) (также как и с test@gmail.com). 
Письмо должно быть отправлено с сервера обслуживающего доменную зону, почтовый сервер должен знать об учетной записи (email).
Есть вероятность, что подобные письма могут проходить, но рано или поздно это заканчивается записями в логах вида rejected. 
 

Единственное верное решение - использование SMTP

SMTP (англ. Simple Mail Transfer Protocol - простой протокол передачи почты) – это широко используемый сетевой протокол, предназначенный для передачи (отправки) электронной почты.

Что это значит для вашего сайта: Возможность вашего сайта отсылать сообщения на ваш E-mail. С контактных, и других форм на вашем сайте. После того как пользователь заполнил информацию к.л. анкеты на вашем сайте, или просто составил сообщение, он нажимает кнопку ‘Отправить’, и ваш сайт должен отправить эту информацию на ваш почтовый ящик.

Решения для CMS:

  • Wordpress: https://srd.wordpress.org/plugins/easy-wp-smtp/
  • Yii: http://www.yiiframework.com/extension/smtp-mail/
  • Drupal : https://www.drupal.org/project/smtp
  • PHP библиотека: https://github.com/PHPMailer/PHPMailer