Хорошо, я нахожусь на моем конце здесь. У меня есть клиент, чей сайт находится на GoDaddy и который использует Outlook. Я написал PHP-скрипт для отправки почты на один из адресов их доменов из контактной формы на их веб-сайте.
Я могу получить это электронное письмо для отправки на все сервисы, кроме аккаунтов outlook / exchange / live / microsoft.
Я читал, что использование PHPMailer было хорошей идеей, поэтому сейчас я использую его для отправки почты:
//$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "a2plcpnl0287.prod.iad2.secureserver.net";
$mail->Port = 465;
$mail->Username = "[email protected]";
$mail->Password = "xxxxxxx";
$mail->SetFrom('[email protected]', 'First Last');
$mail->AddReplyTo("[email protected]","First Last");
$mail->Subject = "PHPMailer Test Subject via smtp (hotmail), basic";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!";
$mail->MsgHTML($body);
$address = "[email protected]";
if(!$mail->Send()) {
error_log("Error from calculator!". $mail->ErrorInfo);
} else {
error_log("Success from calculator!");
}
Это электронное письмо отправляется на мою учетную запись gmail и некоторые другие, но не на мою учетную запись .live или адрес Outlook моего клиента.
Я перепробовал все, что нашел в интернете, ничего не работает. Любые идеи или мысли кто-нибудь?
Спасибо!
РЕДАКТИРОВАТЬ:
На сервере Godaddy есть запись SPF, которая гласит: v = spf1 include: spf.protection.outlook.com -all
Я создал ключ DKIM из https://www.port25.com/dkim-wizard/ и добавил запись DKIM TXT в GoDaddy со следующими подробностями:
Хост: key1._domainkey.alamohomefinance.com
Значение TXT: k = rsa \; р = MIIBIjA …
Я добавил запись DKIM со следующими деталями:
Имя: _dmarc.alamohomefinance.com
Значение TXT: v = DMARC1; р = карантин; не зр = нет; ОРФ = электронная почта: [email protected]; Rf = afrf; РСТ = 100; п = 86400
Сейчас я тестирую, чтобы увидеть, если эти изменения имеют значение …
Прежде всего, вы должны посмотреть на руководство по устранению неполадок PHPMailer, в котором есть небольшой раздел о GoDaddy и много других проблем.
Вы получите намного лучшую обратную связь о том, что происходит, если вы включите отладочный вывод сообщений сервера, поэтому установите SMTPDebug = 2
и посмотри, что там написано.
Известно, что GoDaddy блокирует исходящий SMTP и, как правило, либо просто не сможет подключиться (об этом см. Множество вопросов по SO), либо вызовет сбои проверки TLS, так как вы прозрачно перенаправлены на их почтовые серверы.
В вашем коде у вас есть smtp.live.com
Хост, но это имя пользователя:
$mail->Username = "a2plcpnl0287.prod.iad2.secureserver.net"
secureserver.net
это домен, используемый для почтовых серверов GoDaddy, и это имя пользователя является именем реального почтового сервера GoDaddy, поэтому очень маловероятно, что вы будете использовать его в качестве идентификатора пользователя для live.com, тем более что GoDaddy будет вращать почту серверы часто, так что вы вряд ли получите один и тот же каждый раз — это то, что действительно Ваш логин для live.com?
Я также с подозрением отношусь к формулировке вашего вопроса: вам не нужно подключаться к live.com для отправки электронной почты на live.com — ничто не мешает вам отправлять на адрес live.com соединение через gmail, так что это звучит как у вас может быть концептуальная проблема. Host
, Username
а также Password
свойства для почтового сервера, который вы отправляете через, не то, что вы отправляете почту в.
Как я уже сказал, обычно GoDaddy вообще не разрешает удаленный SMTP, поэтому я очень удивлен, если у вас это работает без использования почтового сервера GoDaddy, поэтому я подозреваю, что у вас работает что-то еще, а не то, что вы думаете ,
Я также вижу, что вы основали свой код на устаревшем примере, поэтому убедитесь, что вы используете последнюю версию PHPMailer.
Я заметил что-то критическое. Код не звонит $mail->isSMTP();
, Это означает, что он не использует SMTP вообще, он использует по умолчанию mail()
функция, и как таковая ни один из настроек SMTP не имеет никакого значения вообще. Сообщение будет отправлено на ваш локальный почтовый сервер, который затем будет ретранслироваться через сервер GoDaddy. Посмотрите в файле журнала вашего почтового сервера, чтобы увидеть, что происходит, обычно в /var/log/mail.log
или похожие.
Проверьте IP вашего сервера на http://mxtoolbox.com/blacklists.aspx . Я заметил, что Microsoft очень требовательна к черным спискам. У меня была эта проблема с совершенно новыми адресами I.P, которые были получены с явно плохой репутацией. Если у вас есть GodDady на общей учетной записи IP, вполне вероятно, что IP или целые подсети по умолчанию заблокированы.