我需要使用PEAR郵件和經過身份驗證的AD用戶通過PHP在Exchange Server 2016上發送SMTP電子郵件。我發現了一個例子在線:如何使用PHP PEAR郵件和Exchange Server 2016發送電子郵件
<html><body>
<?php
include('Mail.php');
$body = "Hi,\n\nHow are you?";
$headers = array (
'From' => "[email protected]",
'To' => "[email protected]",
'Subject' => "Hi from MailTest3.php!"
);
$smtp = Mail::factory('smtp', array (
'host' => "mail.mydomain.com",
'port' => 587,
'auth' => true,
'username' => "activeDirectoryDomain\\sender",
'password' => "password"
));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
?>
</body></html>
當我運行此我得到以下錯誤:
authentication failure [SMTP: No supported authentication methods (code: 250, response: mail.mydomain.com Hello [192.168.30.254] SIZE 37748736 PIPELINING DSN ENHANCEDSTATUSCODES STARTTLS AUTH GSSAPI NTLM 8BITMIME BINARYMIME CHUNKING)]
同時此類似C#應用程序工作正常,沒有任何問題:
static void Main(string[] args)
{
var body = "Hi,\n\nHow are you?";
var msg = new MailMessage(
from: "[email protected]",
to: "[email protected]",
subject: "Hi from MailTest3.cs!",
body: body);
var smtp = new SmtpClient(
host: "mail.mydomain.com",
port: 587);
smtp.EnableSsl = true;
smtp.UseDefaultCredentials = false;
smtp.Credentials = new NetworkCredential(
userName: "activeDirectoryDomain\\sender",
password: "password");
try
{
smtp.Send(msg);
Console.WriteLine("Message successfully sent!");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
由於C#代碼正常工作,Exchange Server已正確配置,但PEAR郵件無法進行身份驗證。
我應該如何配置PEAR郵件和/或Exchange以使其可以工作?匿名SMTP電子郵件發送不是此環境中的選項。
更新:BastianW的評論後,我成功地使AUTH LOGIN,現在有一個不同的錯誤:
DEBUG: Recv: 220 mail.mydomain.com Microsoft ESMTP MAIL Service ready at Thu, 3 Aug 2017 15:33:14 +0200
DEBUG: Send: EHLO localhost
DEBUG: Recv: 250-mail.mydomain.com Hello
DEBUG: Recv: 250-SIZE 37748736
DEBUG: Recv: 250-PIPELINING
DEBUG: Recv: 250-DSN
DEBUG: Recv: 250-ENHANCEDSTATUSCODES
DEBUG: Recv: 250-STARTTLS
DEBUG: Recv: 250-AUTH LOGIN
DEBUG: Recv: 250-8BITMIME
DEBUG: Recv: 250-BINARYMIME
DEBUG: Recv: 250 CHUNKING
DEBUG: Send: AUTH LOGIN
DEBUG: Recv: 334 VXNlcm5hbWU6
DEBUG: Send: cGxcUHJlcGF5LlBsYXRmb3Jt
DEBUG: Recv: 334 UGFzc3dvcmQ6
DEBUG: Send: OTAjMDNiUjFaaGM2SjRU
DEBUG: Recv: 235 2.7.0 Authentication successful
DEBUG: Send: MAIL FROM:
DEBUG: Recv: 250 2.1.0 Sender OK
DEBUG: Send: RSET
DEBUG: Recv: 250 2.0.0 Resetting
DEBUG: Send: QUIT
爲什麼PEAR郵件發送RSET其關閉時,它得到了「發件人OK」的連接?
感謝您的提示。我成功地啓用了「Auth Login」,現在我更進一步了(請參閱更新後的問題)。 SSL證書是可信任的,由官方CA(不是Windows域名)。 – Vladimir