Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Справка по электронной почте - php mail() или SMTP

Автор вопроса: tferdoОтветов: 3

У меня есть сценарий информационного бюллетеня, который перебирает участников и отправляет письмо каждому индивидуально. раньше это работало нормально, но по мере увеличения числа скрипт начал давать сбой на полпути. Я использую SwiftMailer, и я получаю сообщение: "Отправка не удалась с использованием почты () в качестве почты PHP по умолчанию ()". Будет ли какая-либо польза от попытки отправки с помощью SMTP вместо встроенной функции mail()? Или я должен искать другое решение. Спасибо за любые указатели.

phpemailsmtpswiftmailer

Ответы

Ответ 1 · рейтинг 6 · Marc B

На самом деле функция mail() не доставляет почту. Он просто передает сгенерированную вами почту на SMTP-сервер системы. В любом случае вы будете использовать SMTP.

Если swiftmailer использует функцию PHP mail(), то, скорее всего, что-то пошло не так с настройкой SMTP в вашей системе. Проверьте системные журналы (в частности, почтовый журнал) на наличие подсказок и посмотрите, даст ли Swiftmailer какие-либо более точные сообщения об ошибках.

Ответ 2 · рейтинг 4 · Marco Demaio

Согласно предложениям умного человека, разработавшего Swiftmail и, вероятно, ломал голову над этими вопросами (чтобы вы и я не делали то же самое), это может помочь вам использовать SMTP, а не mail транспорт

По моему опыту - и другим - функция mail() не особенно предсказуема или полезна.

Примечательно, что функция mail() ведет себя совершенно по-разному на серверах Linux и Windows. В Linux используется sendmail, а в Windows - SMTP. ...

Серьезными недостатками при использовании этого транспорта являются:

  • Непредсказуемые заголовки сообщений
  • Отсутствие обратной связи о сбоях доставки
  • Отсутствие поддержки нескольких плагинов, требующих обратной связи о доставке в режиме реального времени.

Это крайняя мера, и мы говорим это со страстью!

Более того, на той же странице он также объясняет, как обрабатывать информационные бюллетени, просто перебирая поле "Кому" вместо чтения раздела Пакетная отправка электронных писем на той же странице.

Ответ 3 · рейтинг 1 · Wooble

Функция mail() отправляет электронную почту с помощью SMTP. Однако вы можете попробовать что-то вроде PEAR::Mail. Использование mail() откроет новое SMTP-соединение для каждого сообщения, что довольно неэффективно в цикле. Это вполне может быть причиной ваших ошибок, хотя с таким общим сообщением об ошибке невозможно быть уверенным без дополнительных копаний.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы