web-dev-qa-db-ja.com

phpmailer-次のSMTPエラー:データは受け入れられません

この問題を6時間把握しようとしています。しかし、意味をなすものは何もありません。シナリオは次のとおりです。適切にフォーマットされたHTMLテンプレートがあります。

$mail_body = '
    <b>Message Num :</b> 769<br />
    <b>Message Date :</b> 2013-04-08 09:03:21<br />
    <b>Name :</b> John Doe<br />
    <b>Phone :</b> 123456789<br />
    <b>E-mail :</b> [email protected]<br />
    <b>Message :</b> Here is the message info<br />
';

これが受信者のメールの配列です。

$recipients = array("[email protected]","[email protected]");

すべてが正常に表示され、電子メールを送信する準備ができています。

$mail = new PHPMailer(); 
$mail->IsSMTP();
$mail->From = "[email protected]"; 
$mail->FromName = "TEST";
$mail->WordWrap = 50;

foreach($recipients as $mail_add) {
    $mail->AddAddress($mail_add);
}
$mail->IsHTML(true);
$mail->Subject = "TEST Subject";
$mail->Body = $mail_body;
if(!$mail->Send()) {
    echo $mail->ErrorInfo;
} else { 
        echo "Mail sent...";
}

私がテストしてもすべて同じです。しかし、時々メールが送信されました。時々送信されませんでした。次のエラーを教えてください:The following SMTP Error: Data not accepted.

私が説明したことを願っています

34
Yasin Yörük

サーバーは、設定する必要のある異なる送信者とユーザー名を許可していません:$mail->From 好む $mail->Username

42
css.cutter

PHPMailerと連携してAmazon SESを使用するAWSユーザーの場合、「from」メール送信者が検証済みの送信者でない場合にもこのエラーが表示されます。

確認済みの送信者を追加するには:

  1. Amazon AWSコンソールにログインします。 https://console.aws.Amazon.com

  2. 利用可能なAWSアプリケーションのリストから「Amazon SES」を選択します

  3. [確認済み送信者]で[メールアドレス]-> [新しいメールアドレスを確認]を選択します

  4. その新しい送信者の電子メールに移動し、確認電子メールのリンクをクリックします。

そして、あなたはすべて設定されています。

14
Jonathan LeRoux

興味深いことに、私はまったく同じ問題を抱えていました。私にとって問題は、接続がタイムアウトしたことでした。接続の詳細を確認できるように、$mail->SMTPDebug = 4;私のphpmailerに(デフォルトの出力関数はechoであるため、デバッグのキャプチャ方法を調べてください)。

結果は次のとおりです。

SMTP -> get_lines(): $data was ""
SMTP -> get_lines(): $str is ""
SMTP -> get_lines(): $data is ""
SMTP -> get_lines(): timed-out (10 seconds)
SMTP -> FROM SERVER:
SMTP -> ERROR: DATA not accepted from server: 

デフォルトのタイムアウトは10秒に設定されています。アプリがさらにサポートできる場合は、phpmailerに次の行を追加します。

$mail->Timeout = 20;
9
phoenix

デバッグで動作するようにphpmailerを設定して、「SMTPエラー:データは受け入れられません」という一般的なメッセージの背後にある「実際の」エラーを確認します。

  $email->SMTPDebug = true;
9
zzapper

特定のサイズのメッセージでは、$ mail-> Bodyを介して設定するときにコンテンツを台無しにします。

小さいメッセージではうまく機能するが、大きいメッセージ(4〜6 kB以上)では機能しない場合は、テストできます。これが問題です。

これは$ mail-> Bodyの問題のようです。そのため、$ mail-> MsgHTML($ message)を介してHTML本文を手動で設定することにより、これを回避できます。そして、$ mail-> AltBodyでHTML以外の本文のみを追加することができます。

詳細、情報をお気軽にお寄せください。

5
Adam Szabo

私はただ使っていました

$mail->Body    = $message;

また、いくつかの集計された形式では、PHPはエラーを返していました。

SMTPエラー:データは受け入れられません。SMTPサーバーエラー:DATA ENDコマンドが失敗しました詳細:このメッセージはスパムとして分類され、配信されない可能性がありますSMTPコード:550

$ mail-> Body = $ messageの後にこのコードを追加して修正しました:

$mail->MsgHTML = $message;
$mail->AltBody = $message;
2
André A.

ポートを26に設定してみてください。これにより、「データが受け入れられません」というメッセージに関する問題が修正されました。

1
Matteo

最初に、デバッグをTRUEに設定することをお勧めします。

$ email-> SMTPDebug = true;

または、public $ SMTPDebug = false;の一時的な変更値。 PHPMailerクラス。

そして、ブラウザで完全なログを見ることができます。私にとっては1秒あたりのメールが多すぎる

...
SMTP -> FROM SERVER:XXX.XX.XX.X Ok
SMTP -> get_lines(): $data was ""
SMTP -> get_lines(): $str is "XXX.XX.XX.X Requested action not taken: too many emails per second "
SMTP -> get_lines(): $data is "XXX.XX.XX.X Requested action not taken: too many emails per second "
SMTP -> FROM SERVER:XXX.XX.XX.X Requested action not taken: too many emails per second
SMTP -> ERROR: DATA command not accepted from server: 550 5.7.0 Requested action not taken: too many emails per second
...

したがって、私は正確な問題が何であるかを知りました。

1
Sadee

このエラーはphpMailer + Amazon SESでヒットしていました。 phpMailerエラーはあまり説明的ではありません。

2: message: SERVER -> CLIENT: 554 Transaction failed: Expected ';', got "\"
1: message: 
2: message: SMTP Error: data not accepted.

私にとっての問題は、コンテンツタイプとして次のものがあることだけでした。

$phpmailer->ContentType = 'text/html; charset=utf-8\r\n';

ただし、改行を入れてはいけません。

$phpmailer->ContentType = 'text/html; charset=utf-8';

...これは古いバージョンのレガシーコードであると思われます。したがって、基本的には、追加する$ phpmailerの設定ごとにトリプルチェックを行います-最小の詳細カウントです。

1
Woody Hayday

私の場合、問題はメールの内容にありました。コンテンツをHTMLのないシンプルなコンテンツに変更すると、うまくいきました。しかし、phpmailerを更新すると、すべてが解決しました。

0
Niby

Gmail SMTPサーバー経由でメールを送信しますが、Gmail送信制限に達すると、PHPMailerからこの正確なエラーを受け取ることがあります。

Gmailにアクセスして手動でメールを送信することで、同じことが起こっているかどうかを確認できます。この場合、送信制限に関するより有用なエラーメッセージが表示されます。

https://support.google.com/a/answer/166852?hl=en

0
brismuth

私の場合、cpanelには「メールIDを登録する」オプションがあり、電子メールアドレスを追加し、30分後に簡単なPHPメール機能で正常に動作します。

0
Dinesh Gurjar

Office 365 SMTPゲートウェイを使用している場合、「SMTPエラー:データは受け入れられません。」は、メールボックスがいっぱいの場合に取得する応答です(メールボックスから送信している場合でも)。

メールボックスからいくつかのメッセージを削除してみてください。

0
beingalex

同じ問題が発生していました。私のインスタンスでは、Exchangeサーバーがインターネット上のサーバーに電子メールを中継していたため、送信メールがタイムアウトになりました。そのサーバーは帯域幅のクォータを超えていました。どうやらphpメーラーにはいくつかのタイムアウトが組み込まれているため、実際のメッセージを表示するには長さが足りませんでした。

0
geekinit