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>
私はこれを実行すると、私は次のエラーを取得:この同様のC#アプリケーションが問題なく正常に動作します。同時に
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)]
を:
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のログインを可能にすることに成功し、現在は別のエラーがあります:
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のメールは、「送信者OK」を取得するときに接続を閉じRSETを送信しますか?
ヒントをお寄せいただきありがとうございます。私は "認証ログイン"を有効にすることに成功し、今私はさらに進んでいます(更新された質問を参照)。 SSL証明書は、正式なCA(Windowsドメインの証明書ではない)によって信頼されたものです。 – Vladimir