Совсем недавно и случайно я узнал, что я не могу отправлять электронные письма в зарубежные источники за пределами моего сервера (я тестировал его с локальными адресами электронной почты, установленными на том же сервере). Это мой код, и я не могу отправить (например) gmail или yahoo.
$receiver = $emailadr;
$subj = 'Auth';
$msg = 'Thank you!';
$header = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion() . "\r\n" . 'Content-type: text/html; charset=iso-8859-1';
mail($receiver, $subj, $msg, $header);
Когда (попытка) отправляется, возникает следующее:
: mail(): ответ SMTP-сервера: 503 Этот почтовый сервер требует аутентификации при попытке отправить на нелокальный адрес электронной почты. Проверьте настройки почтового клиента или обратитесь к администратору, чтобы убедиться, что домен или адрес определены для этого сервера.
Я использую Plesk 12.5
Сообщение об ошибке достаточно ясно. This mail server requires authentication
Вы можете создать пользователя почты в Plesk и использовать следующий класс PHP для отправки почты с аутентификацией:
http://phpmailer.worxware.com/index.php?pg=tutorial#2
Также вы можете попробовать некоторые службы облачной почты, такие как http://sendgrid.com/, у них есть хорошая библиотека PHP API.
Похож на проблему почтового сервера. Ваши коды находятся на общем хостинге? Возможно, у вас есть антиспамовая конфигурация (надеюсь). Вы должны убедиться, что ваш адрес отправителя существует. Для тестирования также полезно, если вы отправляете сообщение самому себе (если вы этого еще не сделали), у него больше шансов на работу, а затем вы можете проверить заголовки писем.
На среднем настроенном сервере электронной почты существует четыре способа почтовой связи: (я предполагаю, что ваш сервер работает на somedomain.com и предоставляет @somedomain.com почту)