Я работал над этой проблемой в течение последних 2 дней, и все, что я пробовал, все еще не работает. Я пытаюсь пройти проверку подлинности на сервере обмена с php, чтобы я мог отправлять на внешние домены.
Если я отключу аутентификацию, я могу отправить внутренне без каких-либо проблем.
Вот ошибка
SMTP -> FROM SERVER:220 N-CAS1-13.company.domain Microsoft ESMTP MAIL Service ready at Sat, 20 Feb 2016 16:16:05 -0500
SMTP -> FROM SERVER: 250-N-CAS1-13.company.domain Hello [10.10.10.31] 250-SIZE 37748736 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-X- ANONYMOUSTLS 250-AUTH NTLM 250-X-EXPS GSSAPI NTLM 250-8BITMIME 250-BINARYMIME 250-CHUNKING 250 XRDST
SMTP -> ERROR: AUTH not accepted from server: 504 5.7.4 Unrecognized authentication type
SMTP -> FROM SERVER:250 2.0.0 Resetting
SMTP Error: Could not authenticate.
Вот код phpmailer
require "phpmailer/class.phpmailer.php"; //include phpmailer class
//require "PHPMailer-5.2.14/PHPMailer-5.2.14/PHPMailerAutoload.php";$mail = new PHPMailer();$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->SMTPDebug = 2;
$mail->SMTPSecure = false;
$mail->Host = "10.10.10.38";
$mail->Port = 25;$mail->Username = "username";
$mail->Password = "cGhpbGltaWVzMjM2OTY5";
$mail->From = "[email protected]";
$mail->FromName = "name";
$mail->SetFrom("[email protected]", "name");$mail->Subject = $_POST['company'].": (Time Sensitive)";
$mail->AddEmbeddedImage('trans2.png', 'logo', 'trans2.png ');$mail->AddAttachment("docs/install.xlsx");
$mail->MsgHTML($message1.$message2.$message3);// Send To
$mail->AddAddress($_POST['emailid'], ""); // Where to send it - Recipient
$mail->AddCC("[email protected]");
$result = $mail->Send(); // Send!
$message = $result ? 'Successfully Sent!' : 'Sending Failed!';
unset($mail);
}
Я пробовал другую версию phpmailer, я пытался кодировать пароль с base64, я пробовал только имя пользователя, я пробовал электронную почту в качестве имени пользователя … Все еще ничего
Сервер обмена находится на порту 25 и не требует SSL или TLS.
SMTP -> ОТ СЕРВЕРА: … 250-AUTH NTLM
Сервер ожидает только аутентификацию NTLM, но не LOGIN, PLAIN или DIGEST-MD5, которые могут использоваться только с именем пользователя и паролем. Вам также потребуется сфера NTLM и ваша рабочая станция.
К сожалению, документации об этом не так много, но вы можете взглянуть на http://www.phpclasses.org/browse/file/31.html и ищите NTLM, чтобы понять, как это сделать.
Других решений пока нет …