Передача недопустимого сообщения при отправке почты с функцией 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 рекомендуются следующие локальные почтовые серверы:
- hmailserver
- MailEnable
- Smartermail
Вы должны увидеть особенности и требования каждого из них. Я полагаю, что один из них может помешать работе MySQL (так как установщик попытается разместить его собственную копию).
SMTP-сервер ISPdomain.com, вероятно, жалуется, что ваше соединение слишком базовое для его правил защиты от спама.
Как говорится в сообщении об ошибке, вы должны использовать SMTP-аутентификацию для этого сервера.
Это невозможно при использовании встроенных в PHP возможностей SMTP.
Самый простой способ - использовать готовый класс почтовой программы, такой как http://swiftmailer.org/. Вот пример, как это сделать.