2009-03-12 7 views
4

Der folgende Code akzeptiert die NachrichtMailer Fehler: SMTP Fehler: Die folgenden SMTP-Fehler: Daten nicht

Mailer Error: SMTP Error: The following SMTP Error: Data not accepted. But when I replace $EmailAdd with a [email protected] The mail was sent. 

gibt Was mit meinem Code falsch? Ich bin neu in PHP, vor allem im Umgang mit Mail-Funktionen.

$sql1 = "SELECT Email_Address FROM participantable where IDno=$studId"; 
$result1 = mysql_query($sql1); 
while ($row1 = mysql_fetch_assoc($result1)){ 
    $EmailADD = $row1["Email_Address"]; 
} 

//error_reporting(E_ALL); 
error_reporting(E_STRICT); 
date_default_timezone_set('America/Toronto'); 

include("class.phpmailer.php"); 
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded 

$mail    = new PHPMailer(); 
$body    = $mail->getFile('contents.html'); 
$body    = eregi_replace("[\]",'',$body); 

$mail->IsSMTP(); 
$mail->SMTPAuth = true;     // enable SMTP authentication 
$mail->SMTPSecure = "ssl";     // sets the prefix to the servier 
$mail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 
$mail->Port  = 465;     // set the SMTP port for the GMAIL server 
$mail->Username = "[email protected]"; // GMAIL username 
$mail->Password = "********";   // GMAIL password 
$mail->AddReplyTo("[email protected]","Lord Skyhawk"); 
$mail->From  = "[email protected]"; 
$mail->FromName = "Update"; 
$mail->Subject = "PHPMailer Test Subject via gmail"; 
$mail->Body  = "Hi,<br>This is the HTML BODY<br>";      //HTML Body 
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test 
$mail->WordWrap = 50; // set word wrap 
$mail->MsgHTML($body); 
$mail->AddAddress($EmailADD, "Agta ka"); 
$mail->AddAttachment("images/phpmailer.gif");    // attachment 
$mail->IsHTML(true); // send as HTML 

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    $status = "Successfully Save!"; 
    header("location: User_retsched.php?IDno=$studId&status=$status&Lname=$Lname&Fname=$Fname&Course=$Course&Year=$Year"); 
} 
+1

Sie sollten gehen Sie ändern Sie Ihre Gmail-Passwort .... –

+0

aber wenn ich $ EmailAdd zu einer echten E-Mail-Adresse wie [email protected] ändern, dann sendet es die E-Mail. –

+0

Ich versuchte sein Gmail-Passwort - nicht funktioniert – benlumley

Antwort

0

Versuchen Sie einen anderen SMTP-Server? Sehen Sie, ob das funktioniert?

Oder einfach nicht einen SMTP-Server verwenden, die meisten Server mit PHP auf haben auch sendmail/postfix, so können E-Mails selbst weiterleiten.

Entfernen dieses Bit ...

$mail->IsSMTP(); 

$mail->SMTPAuth = true;     // enable SMTP authentication 

$mail->SMTPSecure = "ssl";     // sets the prefix to the servier 

$mail->Host  = "smtp.gmail.com";  // sets GMAIL as the SMTP server 

$mail->Port  = 465;     // set the SMTP port for the GMAIL server 

$mail->Username = "[email protected]"; // GMAIL username 

$mail->Password = "alucar";   // GMAIL password 
+0

die SMTP-Arbeit Sir, aber ich denke, dass das Problem ist, die E-Mail-Adresse aus der Datenbank zu bekommen. –

3

Check Sie im Skript an dieser Stelle an die DB Ausgabe & Variablenwert abfragen. Stellen Sie sicher, dass der gewünschte Wert für $ EmailADD zurückgegeben wird.

eine var_dump ($ EmailADD, true);

oder versuchen, irgendwo die Ausgabe dieser Abfrage zu echo. Wenn Sie tatsächlich einen E-Mail-Wert von dieser Abfrage erhalten, sehe ich nicht, warum es nicht funktionieren sollte, besonders wenn Sie erwähnen, dass die Zuweisung eines Wertes direkt funktioniert; ohne SQL-Abfrage.

+1

+1: Ich hatte den gleichen Fehler msg und ungültige E-Mail in der AddAddress-Methode war genau mein Problem. – James

4

Es hilft auch, wenn Sie Ihre tägliche Sendungsgrenze von Googles Spam nicht überschritten haben.

+2

Ein Quelllink oder das tatsächliche Limit kann hilfreich sein. – JSuar

+0

Dies ist die Antwort .. Ich denke, sie beschränken Sie auf 1000 oder weniger E-Mails pro Tag (ausgehend über SMTP) – reefine

+0

Quelle: https://support.google.com/a/answer/166852 – Ajax

7

Die meisten Male habe ich diese Nachricht gesehen die E-Mail wird erfolgreich gesendet, aber nicht immer. Zum Debuggen, Set:

$mail->SMTPDebug = true; 

Sie können entweder echo die Debug-Meldungen an oder melden sie error_log() mit:

// 'echo' or 'error_log' 
$mail->Debugoutput = 'echo'; 

Ein wahrscheinlicher Kandidat vor allem auf einem stark ausgelasteten Server sind die SMTP-Timeouts:

// default is 10 
$mail->Timeout = 60; 

class.smtp.php hat auch eine Timelimit Eigenschaft für Lesevorgänge vom Server verwendet.

+0

Ich habe eine Datei angehängt, die war zu groß für das Senden und die Debugging-Tipps haben mir geholfen, das zu bestimmen. Vielen Dank! – Nick

+1

DANKE ANIMISMUS !!!!! Für all jene Leute, die RANDOM-Fehler "Data Not Accepted" an Code haben, den Sie "KNOW" an anderer Stelle verwenden (und Ihr "neuer Server" funktioniert), versuchen Sie, Ihr $ mail-> Timeout auf etwas größer als 10 zu setzen.).Ich habe seit Wochen versucht, herauszufinden, was das verursacht, und ohne Erfolg, bis ich diesen Beitrag gefunden habe. Einige Server können die 10-Sekunden-Vorgabe nicht verarbeiten und benötigen in diesem Bereich etwas mehr Umph. Glaube nicht? Versuchen Sie, dies auf etwas kleiner als 10, wie 5 oder 2, zu setzen. Versuchen Sie, es auf 60 zu setzen, beachten Sie, dass dies konsistent ist! – NinjaKC

Verwandte Themen