it-swarm.com.de

phpmailer - Der folgende SMTP-Fehler: Daten nicht akzeptiert

Ich versuche, das Problem 6 Stunden lang zu klären. Es ist jedoch nichts sinnvoll. Hier ist das Szenario; Es gibt eine gut formatierte HTML-Vorlage.

$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 />
';

Hier ist das Array der Empfänger-Mails.

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

Alles sieht gut aus und E-Mail ist bereit zu senden.

$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...";
}

Wenn ich es teste, ist alles gleich. Manchmal wurde jedoch eine E-Mail gesendet. Manchmal wurde es nicht gesendet. Gib mir folgenden Fehler: The following SMTP Error: Data not accepted.

Ich hoffe ich habe es erklärt

26
Yasin Yörük

ihr Server darf keinen anderen Absender und Benutzernamen zulassen Sie sollten die Konfiguration vornehmen: $mail->From wie $mail->Username

37
css.cutter

Für AWS-Benutzer, die mit Amazon SES in Verbindung mit PHPMailer arbeiten, wird dieser Fehler auch angezeigt, wenn Ihr Absender "von" kein bestätigter Absender ist.

So fügen Sie einen verifizierten Absender hinzu:

  1. Melden Sie sich an Ihrer Amazon AWS-Konsole an: https://console.aws.Amazon.com

  2. Wählen Sie "Amazon SES" aus Ihrer Liste der verfügbaren AWS-Anwendungen aus

  3. Wählen Sie unter "Verified Senders" die "E-Mail-Adressen" -> "Neue E-Mail-Adresse bestätigen" aus.

  4. Navigieren Sie zur E-Mail des neuen Absenders und klicken Sie auf den Link der Bestätigungs-E-Mail.

Und du bist fertig.

8
Jonathan LeRoux

Interessanterweise hatte ich genau das gleiche Problem und für mich bestand das Problem darin, dass meine Verbindung ein Zeitlimit hatte. Um mehr Details zu meinen Verbindungen sehen zu können, habe ich $ mail-> SMTPDebug = 4 hinzugefügt. zu meinem phpmailer (nachsehen, wie man den debug aufnimmt, da die Standardausgabefunktion echo ist).

Hier ist das Ergebnis:

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: 

Das Standard-Timeout ist auf 10 Sekunden eingestellt. Wenn Ihre App mehr unterstützt, fügen Sie diese Zeile Ihrem phpmailer hinzu:

$mail->Timeout = 20;
8
phoenix

Bei einer bestimmten Nachricht der Größe wird der Inhalt beim Einstellen durch $ mail-> Body durcheinander gebracht.

Sie können es testen, wenn es mit kleinen Nachrichten gut funktioniert, aber nicht mit größeren (über 4-6 kB), dann ist dies das Problem.

Es scheint das Problem von $ mail-> Body zu sein. Sie können dieses Problem umgehen, indem Sie den HTML-Body manuell über $ mail-> MsgHTML ($ message) einstellen. Und dann können Sie versuchen, den Nicht-HTML-Body nur über $ mail-> AltBody hinzuzufügen.

Hoffen Sie, dass ich helfen könnte, gerne mehr Informationen und Informationen.

4
Adam Szabo

stellen Sie phpmailer so ein, dass es im Debug funktioniert, um den "echten" Fehler hinter der generischen Nachricht 'SMTP-Fehler: Daten nicht akzeptiert' zu sehen. In diesem Fall löste der Text in der Nachricht den SMTP-Server-Spam-Filter aus.

  $email->SMTPDebug = true;
4
zzapper

Versuchen Sie, den Port auf 26 einzustellen. Dies hat mein Problem mit der Meldung "Daten nicht akzeptiert" behoben.

1
Matteo

Zuerst sollten Sie das Debug auf TRUE setzen:

$ email-> SMTPDebug = true;

Oder temporärer Änderungswert von public $ SMTPDebug = false; in der PHPMailer Klasse.

Und dann können Sie das vollständige Protokoll im Browser sehen. Für mich war es zu viele E-Mails pro Sekunde:

...
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
...

So erfuhr ich, worum es genau ging.

1
Sadee

Ich habe gerade benutzt

$mail->Body    = $message;

bei einigen unzugänglichen Formularen gab PHP den Fehler zurück:

SMTP-Fehler: Daten nicht akzeptiert.SMTP-Serverfehler: DATA END-Befehl ist fehlgeschlagen. Detail: Diese Nachricht wurde als SPAM klassifiziert und möglicherweise nicht übermittelt. SMTP-Code: 550

Ich habe es behoben, indem ich diesen Code nach $ mail-> Body = $ message hinzufügte:

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

In meinem Fall lag das Problem beim Inhalt der Mail. Als ich den Inhalt auf einfacheren Inhalt ohne HTML änderte, funktionierte es. Aber nach dem Update des phpmailer ist alles gelöst.

0
Niby

Wir senden E-Mails über die Google Mail-SMTP-Server. Diese genaue Fehlermeldung wird von PHPMailer manchmal angezeigt, wenn wir unsere Gmail-Sendelimits erreichen. 

Sie können überprüfen, ob Ihnen das gleiche passiert, indem Sie zu Google Mail gehen und versuchen, eine E-Mail manuell zu senden. In unserem Fall wird die hilfreichere Fehlermeldung über das Senden von Grenzwerten angezeigt.

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

0
brismuth

In meinem Fall in cpanel habe ich die Option "Mail-IDs registrieren", bei der ich meine E-Mail-Adresse hinzufüge. Nach 30 Minuten funktioniert das mit der einfachen PHP-Mail-Funktion.

0
Dinesh Gurjar

Wenn Sie das Office 365 SMTP-Gateway verwenden, wird "SMTP-Fehler: Daten nicht akzeptiert" angezeigt. ist die Antwort, die Sie erhalten, wenn das Postfach voll ist (auch wenn Sie nur von dort aus senden).

Versuchen Sie, einige Nachrichten aus der Mailbox zu löschen.

0
beingalex

Ich habe diesen Fehler mit phpMailer + Amazon SES gefunden. Der phpMailer-Fehler ist nicht sehr beschreibend:

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

Für mich bestand das Problem einfach darin, dass ich Folgendes als Inhaltstyp hatte:

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

Aber dass es nicht den Zeilenumbruch haben sollte:

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

... Ich vermute, dass es sich hierbei um einen älteren Code aus unserer älteren Version handelt. Überprüfen Sie also grundsätzlich jede $ phpmailer-Einstellung, die Sie hinzufügen - die kleinste Detailanzahl.

0
Woody Hayday

Ich hatte das gleiche Problem. In meinem Fall kam es bei der Sende-E-Mail zu einem Timeout, da mein Exchange-Server E-Mails an einen Server im Internet weiterleitete. Dieser Server hat seine Bandbreite überschritten. Offenbar hat PHP Mailer ein Timeout eingebaut und es dauerte nicht lange, um die eigentliche Nachricht zu sehen.

0
geekinit