Какой SMTP-сервер PHP mail () использует по умолчанию, и есть ли лучшие варианты? - PullRequest
9 голосов
/ 10 июня 2009

Я размещаю свой сайт на GoDaddy, и в данный момент я использую функцию PHP mail() для отправки писем с моего сайта. GoDaddy имеет ограничение в 1000 SMTP-ретрансляторов в день для почты формы, но они клянутся, что с моим PHP-скриптом я не должен касаться этого.

  1. Поскольку mail() не принимает SMTP-информацию, он просто автоматически использует GoDaddy (или любой другой хостинг, на котором вы находитесь)?

  2. Если мой сайт будет ожидать более 1000 электронных писем, отправляемых в день (отдельные экземпляры, не в цикле), мне следует использовать другой метод, или mail() правильный выбор?

Ответы [ 8 ]

11 голосов
/ 10 июня 2009

Php использует по умолчанию локальный почтовый сервер. Однако вы можете указать это в вашем файле конфигурации php.ini.

Если вы планируете отправлять больше электронной почты, чем это, вам может понадобиться найти другой сервер для отправки почты или альтернативный хостинг

7 голосов
/ 19 ноября 2013

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

Почему мы должны использовать SMTP вместо PHP mail ():

SMTP Войдите в реальную учетную запись на почтовом сервере и отправьте почту через SMTP на другой почтовый сервер. Если почтовый сервер настроен правильно, ваши письма отправляются с реальной учетной записи на почтовый сервер и не будут помечены как спам.

Почта , отправленная с помощью функции mail (), в большинстве случаев отправляется с sendmail. Аутентификация не происходит, и она почти всегда будет помечена как спам, если вы используете «От:» в дополнительных заголовках.

Это потому, что если вы посмотрите на оригинальный почтовый файл, скажем, gmail, вы увидите отправленные заголовки. Вы на самом деле отправляете от user@serverhostname.tld, а не на somebody@example.com, как вы указали почтовой функции. Если вы используете SMTP и просматриваете оригинал, электронное письмо на самом деле отправляется с somebody@example.com

Класс SMTP можно загрузить по адресу:

  1. https://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=170
  2. http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html
5 голосов
/ 10 июня 2009

На * nix-машине функция PHP mail() не поддерживает SMTP, но вместо этого использует sendmail () или другой сконфигурированный почтовый скрипт на сервере. Этот скрипт может отправлять через SMTP, но это не самый простой способ в PHP (если у вас уже нет скрипта). Чтобы использовать SMTP, я бы рекомендовал PHPMailer . Я использую его в течение нескольких лет и был впечатлен. Он поддерживает SMTP наряду со многими другими протоколами, а также имеет другие полезные функции, такие как добавление только текстового тела для электронного письма в формате HTML и создание надлежащих заголовков. Вы также можете расширить класс, чтобы установить значения по умолчанию, такие как SMTP-сервер и адрес электронной почты / имя, чтобы вам не приходилось устанавливать их каждый раз, когда вы хотите отправить электронное письмо. Это также делает очень хорошие сообщения об ошибках и отладку.

Я бы также рекомендовал этот класс для отправки 1000 писем. Я недавно сделал> 5000 за один день, и у меня не было проблем.

4 голосов
/ 10 июня 2009

Если вам нужно использовать внешний почтовый сервер, требующий аутентификации, вы не сможете использовать функцию PHP mail ().

Я рекомендую использовать: http://pear.php.net/package/Mail

2 голосов
/ 06 января 2013

Поскольку это старый пост, я подумал, что будет полезно, если я обновлю ответ -

Сейчас это сделать намного проще, чем раньше :-) В PHP 4 пакет PEAR Mail обычно уже установлен, и это действительно простое руководство показывает вам несколько строк кода, которые вам нужно добавить в свой файл. php файл http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

Большинство хостинговых компаний перечисляют необходимые настройки SMTP. Я использую JustHost, и они перечисляют их в https://my.justhost.com/cgi/help/26 (под сервером исходящей почты)

2 голосов
/ 11 июня 2009

mail () использует настройку, определенную в php.ini. Серверы Windows требуют наличия фактического сервера smtp, тогда как серверы * nix будут использовать любой mta, установленный на сервере (если есть).

Как уже упоминалось, если вы хотите использовать альтернативный SMTP-сервер, используйте альтернативную библиотеку, такую ​​как SwiftMailer. Также вы хотите убедиться, что SMTP-сервер работает быстро. Я видел замедления при использовании SMTP-сервера, такого как Gmail.

GoDaddy использует Smart SMTP Relay, даже для выделенных серверов, размещенных на GoDaddy. Ограничение основано на том, сколько писем проходит через Smart relay.

Если у вас есть веская причина для отправки большего количества электронных писем, и вы можете убедиться, что ваш сайт не является спамом, и что все электронные письма включены, поддержка увеличит для вас ограничение, если вы дадите им оценку. сколько писем нужно отправить.

1 голос
/ 23 июня 2009

Я использую проект с открытым исходным кодом phpmailer около семи лет - это потрясающе! Вы можете использовать его для подключения к внешнему SMTP-серверу.

1 голос
/ 10 июня 2009

Если вам нужно использовать сторонний почтовый сервис, я бы рекомендовал отказаться от использования mail() и заменить его на SwiftMailer . Это многофункциональный компонент (поддерживает аутентификацию, вложения, шифрование и т. Д.), Который мы использовали в нескольких местах. Это также бесплатно и с открытым исходным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...