Senden von HTML-Nachrichten durch die BIRNE, während der Verwendung der SMTP-Authentifizierung ein Fehler zurückgegeben
Ich bin versucht, senden Sie eine HTML-Nachricht mithilfe von SMTP-Authentifizierung für Google Mail in PHP. Hier ist das Skript, das ich benutze:
require_once "Mail.php";
require_once 'Mail/mime.php';
$from = "Some Name <[email protected]>";
$to = "Other Name <[email protected]>";
$subject = "This is a test";
$crlf = "\n";
$host = "ssl://smtp.gmail.com";
$port = "465";
$username = "[email protected]";
$password = "mypass";
$headers = array ('From' => $from,
'Return-Path' => $from,
'Subject' => $subject);
$smtp = Mail::factory('smtp',
array ('host' => $host,
'port' => $port,
'auth' => true,
'username' => $username,
'password' => $password));
$mime = new Mail_mime($crlf);
$mime->setTXTBody("This is a test email message");
$mime->setHTMLBody($body);
$body = $mime->get();
$headers = $mime->headers($headers);
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo("<p>" . $mail->getMessage() . "</p>");
} else {
echo("<p>Message successfully sent!</p>");
}
Hinweis: die $body
ist eine HTML-Tabelle mit Bildern und anderen Informationen.
Wenn ich das Skript ausführen, schlägt es fehl mit der folgenden Fehlermeldung:
Konnte nicht festgelegt Absender: Einige Namen [SMTP: Invalid response code
received from server (code: 555, Antwort: 5.5.2 Syntax error.
c6sm20541406obd.22)]
Hier ist, was ich versucht habe, um zu sehen, was schief läuft:
1. Mit dem gleichen Skript mit 'Mail' anstelle von 'smtp', d.h.
$smtp = Mail::factory('Mail');
Das funktioniert gut.
2. Mit dem gleichen Skript w/o den mime.php, dies funktioniert auch, aber nicht erlaubt, die zum senden von HTML-E-Mail.
Weiß jemand, wie ich das verbinden kann, so dass ich bin immer noch mit SMTP-Authentifizierung und senden Sie eine HTML-Nachricht?
EDIT:
Hier ist der dump von $mime->headers()
:
[MIME-Version] => 1.0
[From] => Some Name
[Return-Path] => Some Name
[Subject] => This is a test
[Content-Type] => multipart/alternative;
boundary="=_8662996a1f586248545d9f01f48e916d"
$mime->headers()
bitte?Ich habe den dump auf die post. Danke.
InformationsquelleAutor Anton Soradoi | 2012-08-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie unter der folgenden URL ich denke, es ist sehr helfen, voll für Sie.
Wie zum senden von HTML-E-Mails mittels SMTP in PHP
Den Gmail-SMTP-server-Adresse SMTP.GOOGLEMAIL.COM nicht SMTP.GMAIL.COM.
Daher Ihre Einstellungen sollten sein:
Siehe ein weiteres Beispiel:-
Senden von HTML & nur-Text-E-Mails Über Einen SMTP-Server Mit PHP & BIRNE
http://tonyvirelli.com/slider/php-html-email-using-smtp/
Google-Suche vorgeschlagen info-box empfiehlt gmail.com nicht googlemail.com: googeln "gmail smtp-Einstellungen" zeigt in einem Feld an der Spitze ", Wenn Sie die Verbindung mit SMTP -, können Sie nur senden Sie eine mail an Gmail-oder Google Apps-Nutzer; wenn Sie die Verbindung über SSL/TLS, Sie können E-Mails senden zu jedermann. Wenn dein Gerät oder Anwendung unterstützt SSL - Verbindung smtp.gmail.com auf port 465. Um eine Verbindung mit SSL verwenden, müssen Sie einen Google-Nutzernamen und Passwort für die Authentifizierung."
InformationsquelleAutor Abid Hussain
Versuchen Sie, umarmen Sie die Namen in Anführungszeichen gesetzt werden, etwa so:
probieren Sie es aus und sagen Sie uns Bescheid.
Update:
Ok, oben hat nicht funktioniert, so dass ich nur sagen würde, was Sie ist für mich arbeiten in meinem php-Seiten senden von E-Mails über smtp gmail.
also auf, dass Sie könnte versuchen, ändern Sie Ihre Konfiguration:
können Sie sehen, hier wie zum senden von E-mail über Google Mail mit phpmailer.
Ich aktualisiert meine Antwort, hoffe, Sie finden es nützlich.
Vielen Dank für das update, ich habe schon die Lösung gefunden.(siehe unten)
InformationsquelleAutor Nelson
Dachte es mir schließlich.
Dank Abid Hussain für die Bereitstellung des link zu dem Beispiel hier: http://tonyvirelli.com/slider/php-html-email-using-smtp/
Lösung:
'Return-Path' => $from
aus der Header-array.To => $to
auf die Header-array(ohne diese, die zu Kopfzeile der empfangenen E-Mail ist Undisclosed recipients)InformationsquelleAutor Anton Soradoi
Hatte ich dieses Problem und über Debuggen geschafft, alle Arten von verschiedenen Fehlern (unten). Seltsamste Sache ist, dass es komplett aufgehört zu arbeiten auf über 11/2/2017. Ich habe nicht alle updates. Vorher würde es nach dem Zufallsprinzip funktionieren, so habe ich in einem wiederholen und es immer wieder gelang, < 5 versucht, bis zum 2ten. Seltsam.
(und so weiter)
Anderen verwendet geschrieben dieser Schritt der Fehlerbehebung, die mir geholfen, Holen Sie sich weitere Fehler, so konnte ich Google mehr, was könnte die Ursache sein:
Mein fix war das hinzufügen einer CA-bundle-Datei, da offenbar PHP konnte nicht überprüfen, das cert von Google:
InformationsquelleAutor Kevin