2016-06-21 14 views
2

outlook.comのSMTPサーバーを使用してPHPMailerを試していますが、SMTPエラーが発生し続けます PHPMailerのgithubページのサンプルコードに続き、私もSOしかし、答えはPHPMailer SMTPエラー:データが受け付けられません

私の問題は解決しません。これは、コード

<?php 

date_default_timezone_set('Etc/UTC'); 

require_once 'vendor/autoload.php'; 
$mail = new PHPMailer; 

$mail->SMTPOptions = array(
    'ssl' => array(
     'verify_peer' => false, 
     'verify_peer_name' => false, 
     'allow_self_signed' => true 
    ) 
); 

//Tell PHPMailer to use SMTP 
$mail->isSMTP(); 
$mail->SMTPDebug = 2; 

//Ask for HTML-friendly debug output 
$mail->Debugoutput = 'html'; 

//Set the hostname of the mail server 
$mail->Host = 'smtp-mail.outlook.com'; 
$mail->Port = 587; 
$mail->SMTPSecure = 'tls'; 

//Whether to use SMTP authentication 
$mail->SMTPAuth = true; 

//Username to use for SMTP authentication 
$mail->Username = "[email protected]"; 

//Password to use for SMTP authentication 
$mail->Password = "pass"; 

//Set who the message is to be sent from 
$mail->setFrom('[email protected]', 'User'); 

//Set who the message is to be sent to 
$mail->addAddress('[email protected]', 'Recipient'); 

//Set the subject line 
$mail->Subject = 'PHPMailer SMTP test'; 


$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
//Replace the plain text body with one created manually 
$mail->AltBody = 'This is a plain-text message body'; 

//send the message, check for errors 
if (!$mail->send()) { 
    echo "<br><br>Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

そして、ここでデバッグ出力は

SERVER -> CLIENT: 220 BLU436-SMTP81.smtp.hotmail.com Microsoft ESMTP MAIL Service, Version: 8.0.9200.16384 ready at Mon, 20 Jun 2016 23:35:39 -0700 
CLIENT -> SERVER: EHLO localhost 
SERVER -> CLIENT: 250-BLU436-SMTP81.smtp.hotmail.com Hello [139.193.110.46]250-TURN250-SIZE 41943040250-ETRN250-PIPELINING250-DSN250-ENHANCEDSTATUSCODES250-8bitmime250-VRFY250-TLS250-STARTTLS250 OK 
CLIENT -> SERVER: STARTTLS 
SERVER -> CLIENT: 220 2.0.0 SMTP server ready 
CLIENT -> SERVER: EHLO localhost 
SERVER -> CLIENT: 250-BLU436-SMTP81.smtp.hotmail.com Hello [139.193.110.46]250-TURN250-SIZE 41943040250-ETRN250-PIPELINING250-DSN250-ENHANCEDSTATUSCODES250-8bitmime250-VRFY250-AUTH LOGIN PLAIN XOAUTH2250 OK 
CLIENT -> SERVER: AUTH LOGIN 
SERVER -> CLIENT: 334 VXNlcm5hbWU6 
CLIENT -> SERVER: xxx== 
SERVER -> CLIENT: 334 UGFzc3dvcmQ6 
CLIENT -> SERVER: xxx= 
SERVER -> CLIENT: 235 2.7.0 Authentication succeeded 
CLIENT -> SERVER: MAIL FROM:<[email protected]> 
SERVER -> CLIENT: 250 2.1.0 [email protected] OK 
CLIENT -> SERVER: RCPT TO:<[email protected]> 
SERVER -> CLIENT: 250 2.1.5 [email protected] 
CLIENT -> SERVER: DATA 
SERVER -> CLIENT: 354 Start mail input; end with <CRLF>.<CRLF> 
CLIENT -> SERVER: Date: Tue, 21 Jun 2016 06:35:39 +0000 
CLIENT -> SERVER: To: Recipient <[email protected]> 
CLIENT -> SERVER: From: User <[email protected]> 
CLIENT -> SERVER: Subject: PHPMailer SMTP test 
CLIENT -> SERVER: Message-ID: <[email protected]> 
CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.16 (https://github.com/PHPMailer/PHPMailer) 
CLIENT -> SERVER: MIME-Version: 1.0 
CLIENT -> SERVER: Content-Type: multipart/alternative; 
CLIENT -> SERVER: boundary="b1_405c2ef139a1fa30da7bd01a6f945eb0" 
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit 
CLIENT -> SERVER: 
CLIENT -> SERVER: This is a multi-part message in MIME format. 
CLIENT -> SERVER: 
CLIENT -> SERVER: --b1_405c2ef139a1fa30da7bd01a6f945eb0 
CLIENT -> SERVER: Content-Type: text/plain; charset=us-ascii 
CLIENT -> SERVER: 
CLIENT -> SERVER: This is a plain-text message body 
CLIENT -> SERVER: 
CLIENT -> SERVER: 
CLIENT -> SERVER: --b1_405c2ef139a1fa30da7bd01a6f945eb0 
CLIENT -> SERVER: Content-Type: text/html; charset=us-ascii 
CLIENT -> SERVER: 
CLIENT -> SERVER: This is the HTML message body <b>in bold!</b> 
CLIENT -> SERVER: 
CLIENT -> SERVER: 
CLIENT -> SERVER: 
CLIENT -> SERVER: --b1_405c2ef139a1fa30da7bd01a6f945eb0-- 
CLIENT -> SERVER: 
CLIENT -> SERVER: . 
SERVER -> CLIENT: 550 5.3.4 554-554 5.2.0 STOREDRV.Deliver; delivery result banner 
SMTP ERROR: DATA END command failed: 550 5.3.4 554-554 5.2.0 STOREDRV.Deliver; delivery result banner 
SMTP Error: data not accepted. 
+1

あなたはすべてのことを正しくやっています。これは、Outlookのauth oddnessのようです。 [このリンク](https://www.example-code.com/csharp/smtp_hotmail_live.asp)には、他の方法で最初にログインするかどうかが明らかになることが示唆されています。あなたのパスワードは簡単に解読されるので、私はそれを編集しますが、おそらくそれを変更するべきです。 – Synchro

+1

具体的な既知の理由がない限り、証明書検証を無効にしないでください。たとえば、ISPのファイアウォールが透過的にリダイレクトした場合、検証が失敗する可能性があります。その場合、パスワードを第三者に渡します。 – Synchro

+0

ありがとうございます、私は自分のパスワードがそこにあったことを知らなかった。私はSSL証明書エラーが発生しているので、検証を無効にしました。まだデベロッパーモードですので、今は大丈夫です。まずは物事を最初に取りたいだけです。 –

答えて

-1

たぶん私は間違っていますさしかし、私が見る限り、あなたはHTMLデータを送信しようとするために "Body"というプロパティを使用していますが、PHPmailerにはそのためのMsgHTMLプロパティがあります。これが問題である可能性があります(前述のように、テストする価値があります)。

あなたの行を置き換えますことで

$mail->Body = 'This is the HTML message body <b>in bold!</b>';

$mail->MsgHTML('This is the HTML message body <b>in bold!</b>'); 

とテストを;)

をよく見て、

[OK]を、上記の何も加えていないようです。私はあなたのコードを新しいyahoo.comのメールアカウントでテストしましたが、それはかなりうまくいっています。私は私の個人アカウントデータと必要行を変更しています

<?php 

date_default_timezone_set('Etc/UTC'); 

require_once 'include/PHPMaile/PHPMailerAutoload.php'; 
$mail = new PHPMailer; 

$mail->SMTPOptions = array(
    'ssl' => array(
     'verify_peer' => false, 
     'verify_peer_name' => false, 
     'allow_self_signed' => true 
    ) 
); 

//Tell PHPMailer to use SMTP 
$mail->isSMTP(); 
$mail->SMTPDebug = 2; 

//Ask for HTML-friendly debug output 
$mail->Debugoutput = 'html'; 

//Set the hostname of the mail server 
$mail->Host = 'smtp.mail.yahoo.com'; 
$mail->Port = 587; 
$mail->SMTPSecure = 'tls'; 

//Whether to use SMTP authentication 
$mail->SMTPAuth = true; 

//Username to use for SMTP authentication 
$mail->Username = "[email protected]"; 

//Password to use for SMTP authentication 
$mail->Password = "xxx"; 

//Set who the message is to be sent from 
$mail->setFrom('[email protected]', 'User'); 

//Set who the message is to be sent to 
$mail->addAddress('[email protected]', 'Recipient'); 

//Set the subject line 
$mail->Subject = 'PHPMailer SMTP test'; 


$mail->Body = 'This is the HTML message body <b>in bold!</b>'; 
//Replace the plain text body with one created manually 
$mail->AltBody = 'This is a plain-text message body'; 

//send the message, check for errors 
if (!$mail->send()) { 
    echo "<br><br>Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

は、この情報がお役に立てば幸いです。

+0

同じエラーを試しました。 –

+0

別のSMTPサーバーを試しましたか? –

+0

私はmsgHTMLを使用する作業スクリプトを用意しています(ケースを見てください:小さなm)。また、メールのあなたのSMTPのプロトコルの制限を見てください(適切に閉じる、特定の指示を送る...) – Goufalite

0

シンクロのコメントを読んだ後、まずウェブからの見通しにログインしようとしましたが、解決するためのキャプチャがありました。

その後、スクリプトをもう一度実行しようとしましたが、それは動作します。したがって、Outlookのボット防止システムがスクリプトをブロックしていたと思います。

関連する問題