Передача недопустимого сообщения при отправке почты с функцией PHP

Я использую Wamp-сервер и пытаюсь отправить письмо с функцией PHP mail('me@ISPdomain.com','my subject','my body');,
со следующими настройками в php.ini:

SMTP = 'ISP's SMTP server'  
smtp_port = 25 

Но я получаю сообщение:

Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Relaying not allowed. Please use SMTP Authentication.

Как это можно решить?

3 ответа

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

http://en.wikipedia.org/wiki/Open_mail_relay

Открытый почтовый ретранслятор - это SMTP-сервер, настроенный таким образом, что он позволяет любому пользователю в Интернете отправлять через него электронную почту, а не только почту, предназначенную или полученную от известных пользователей. Раньше это была конфигурация по умолчанию на многих почтовых серверах; в самом деле, так было изначально настроено в Интернете, но открытые почтовые ретрансляторы стали непопулярными из-за их использования спаммерами и червями. Многие реле были закрыты или помещены в черные списки другими серверами.

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

Вы можете попробовать взломать эту строку php.ini, которая выглядит так:

SMTP = 'username:password@ISP's SMTP server address'

Это не гарантируется, так как для этой опции требуется нестандартная модификация или опция, установленная на почтовом сервере.

Другой вариант - просто запустить свой собственный локальный прокси-сервер, который не требует аутентификации, который затем будет либо отправлять почту непосредственно на почтовый сервер получателя, либо через аутентифицированное соединение с вашим почтовым сервером.

Я не знаю, что рекомендуется использовать с WampServer, но с WampDeveloper Pro рекомендуются следующие локальные почтовые серверы:

  1. hmailserver
  2. MailEnable
  3. Smartermail

Вы должны увидеть особенности и требования каждого из них. Я полагаю, что один из них может помешать работе MySQL (так как установщик попытается разместить его собственную копию).

SMTP-сервер ISPdomain.com, вероятно, жалуется, что ваше соединение слишком базовое для его правил защиты от спама.

Как говорится в сообщении об ошибке, вы должны использовать SMTP-аутентификацию для этого сервера.

Это невозможно при использовании встроенных в PHP возможностей SMTP.

Самый простой способ - использовать готовый класс почтовой программы, такой как http://swiftmailer.org/. Вот пример, как это сделать.

Другие вопросы по тегам