Newsletter konnte nicht versendet werden

Gesperrt
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Newsletter konnte nicht versendet werden

Beitrag von malsdgtac »

Hallo,

ich bitte euch um Eure Hilfe.

Ich soll einen Newsletter versenden. Habe das Modul HTML-Newsletter im Einsatz und habe die E-Mail-Adressen per Script in die Datenbank importiert.

Jetzt bekomme ich beim Versenden des Newsletters die Fehlermeldungen "Newsletter konnte an *Emailadresse* nicht versendet werden."

Kann mir bitte jemand helfen?
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Jetzt habe ich bei einem anderen Empfänger folgende Meldung erhalten:

"Empfänger hat einen inkompatiblen oder leeren Schlüssel"

Ich schätze jetzt, dass es mit dem "HASH-Wert" zusammen hängt. Wenn ich die entsprechende E-Mail-Adresse bearbeite, bekommt der Eintrag einen neunen Wert, der Newsletter kann aber trotzdem nicht versendet werden.
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Das Problem scheint an folgender Aktualsierung des HTML-Newsletter Moduls zu liegen, dass scheinbar in der 4.6.15 nicht mehr funktioniert:

Code:
$mail = new phpmailer();
$mail->From = $from;
$mail->FromName = $from;
$mail->AddAddress($to);
$mail->Mailer = "mail";
$mail->Subject = $subject;
$mail->Body = $message2."\n\n".$foot;
// $mail->AltBody = $body;
if (!$mail->Send()) {
$result[] = $name . " (" . $to . "): " . sprintf(i18n("Newsletter to %s could not be sent"), $to);
} else {
$result[] = $name . " (" . $to . "): " . i18n("Sent successfully");
}



ersetzen durch:

Code:

$messageHTML2 = str_replace("MAIL_NAME", "$name", $messageHTML);
$messageHTML2 = str_replace("MAIL_UNSUBSCRIBE", "<a href=\"".$path."unsubscribe=".$key."\">".$path."unsubscribe=".$key."</a>", $messageHTML2);
$messageHTML2 = str_replace("MAIL_CHANGE", "<a href=\"".$path."change=".$key."\">".$path."change=".$key."</a>", $messageHTML2);
$messageHTML2 = str_replace("MAIL_STOP", "<a href=\"".$path."stop=".$key."\">".$path."stop=".$key."</a>", $messageHTML2);
$messageHTML2 = str_replace("MAIL_GOON", "<a href=\"".$path."goon=".$key."\">".$path."goon=".$key."</a>", $messageHTML2);

$boundary = md5(uniqid(time()));

$headers = 'From: ' . $from . "\n";
$headers .= 'To: ' . $to . "\n";
$headers .= 'Return-Path: ' . $from . "\n";
$headers .= 'MIME-Version: 1.0' ."\n";
$headers .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '"' . "\n\n";
$headers .= $message2."\n\n".$foot . "\n";
$headers .= '--' . $boundary . "\n";
$headers .= 'Content-Type: text/plain; charset=ISO-8859-1' ."\n";
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\n";
$headers .= $message2."\n\n".$foot . "\n";
$headers .= '--' . $boundary . "\n";
$headers .= 'Content-Type: text/HTML; charset=ISO-8859-1' ."\n";
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\n";
$headers .= $messageHTML2."<p>".$foot."</p></body></html>\n";
$headers .= '--' . $boundary . "--\n";

$mailOk=mail('', $subject,'', $headers);

if ($mailOk) {
$result[] = $name . " (" . $to . "): " . i18n("Sent successfully");
} else {
$result[] = $name . " (" . $to . "): " . sprintf(i18n("Newsletter to %s could not be sent"), $to);
}


Weiß jemand was das Problem ist?
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Die Änderung ersetzt den Versand über die phpmailer-Klasse mit dem Versand über die PHP-mail()-Funktion.

Unter Tips&Tricks findest Du Hinweise zum Versand via mail()-Funktion (z.B. bei Hosteurope), die solltest Du mal probieren. Ansonsten musst Du prüfen, ob Du auf Deinem Server via mail() Mails versenden kannst (d.h. ein Mailer für mail() in den PHP-Einstellungen festgelegt wurde).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Hallo Herr B,

also ehrlich gesagt ist es mir noch immer unklar warum folgende Zeilen Code in der Version 4.6.8 funktionieren und in der Version 4.6.15 nicht.

Code: Alles auswählen

$messageHTML2 = str_replace("MAIL_NAME", "$name", $messageHTML); 
$messageHTML2 = str_replace("MAIL_UNSUBSCRIBE", "<a href=\"".$path."unsubscribe=".$key."\">".$path."unsubscribe=".$key."</a>", $messageHTML2); 
$messageHTML2 = str_replace("MAIL_CHANGE", "<a href=\"".$path."change=".$key."\">".$path."change=".$key."</a>", $messageHTML2); 
$messageHTML2 = str_replace("MAIL_STOP", "<a href=\"".$path."stop=".$key."\">".$path."stop=".$key."</a>", $messageHTML2); 
$messageHTML2 = str_replace("MAIL_GOON", "<a href=\"".$path."goon=".$key."\">".$path."goon=".$key."</a>", $messageHTML2); 

$boundary = md5(uniqid(time())); 

$headers = 'From: ' . $from . "\n"; 
$headers .= 'To: ' . $to . "\n"; 
$headers .= 'Return-Path: ' . $from . "\n"; 
$headers .= 'MIME-Version: 1.0' ."\n"; 
$headers .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '"' . "\n\n"; 
$headers .= $message2."\n\n".$foot . "\n"; 
$headers .= '--' . $boundary . "\n"; 
$headers .= 'Content-Type: text/plain; charset=ISO-8859-1' ."\n"; 
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\n"; 
$headers .= $message2."\n\n".$foot . "\n"; 
$headers .= '--' . $boundary . "\n"; 
$headers .= 'Content-Type: text/HTML; charset=ISO-8859-1' ."\n"; 
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\n"; 
$headers .= $messageHTML2."<p>".$foot."</p></body></html>\n"; 
$headers .= '--' . $boundary . "--\n"; 

$mailOk=mail('', $subject,'', $headers); 

if ($mailOk) { 
$result[] = $name . " (" . $to . "): " . i18n("Sent successfully"); 
} else { 
$result[] = $name . " (" . $to . "): " . sprintf(i18n("Newsletter to %s could not be sent"), $to); 
} 
Ich habe gestern zum ersten Mal den HTML-Newsletter in der 4.6.15 verwendet und hatte dann dieses Problem (natürlich genau da, wo der Newsletter unbedingt gleich raus sollte :-( ) ich habe dann ein anderes Contenido in der Version 4.6.8 dafür verwendet - da hat das Script dann einwandfrei funktioniert.

Die zwei Systeme liegen beim gleichen Provider (all-inkl) auf Servern mit den gleichen Voraussetzungen (PHP5, MySQL5) daher scheint es mir unwahrscheinlich, dass dies das Problem ist?
malsdgtac
Beiträge: 717
Registriert: Fr 12. Mär 2004, 15:50
Kontaktdaten:

Beitrag von malsdgtac »

Also ich habe jetzt das Problem gefunden, vielleicht hilft es ja auch jemanden anderen.

Die Lösung wurde auch bereits in diesem Thread (http://www.contenido.org/forum/viewtopi ... r&start=30)angeobten , nur habe ich den Zusammenhang nicht kapiert:

Der Code

Code: Alles auswählen

$headers  = 'From: ' . $from . "\n"; 
$headers .= 'To: ' . $to . "\n"; 
$headers .= 'Return-Path: ' . $from . "\n"; 
$headers .= 'MIME-Version: 1.0' ."\n"; 
$headers .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '"' . "\n\n"; 
$headers .= $message2."\n\n".$foot . "\n"; 
$headers .= '--' . $boundary . "\n"; 
$headers .= 'Content-Type: text/plain; charset=ISO-8859-1' ."\n"; 
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\n"; 
$headers .= $message2."\n\n".$foot . "\n"; 
$headers .= '--' . $boundary . "\n"; 
$headers .= 'Content-Type: text/HTML; charset=ISO-8859-1' ."\n"; 
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\n"; 
$headers .= $messageHTML2."<p>".$foot."</p></body></html>\n"; 
$headers .= '--' . $boundary . "--\n";*/ 

   $mailOk=mail('', $subject,'', $headers); 
muss durch den folgenden ersetzt werden:

Code: Alles auswählen

   $headers  = 'From: ' . $from . "\n"; 
   $headers .= 'To: ' . $to . "\n"; 
   $headers .= 'Return-Path: ' . $from . "\n"; 
   $headers .= 'MIME-Version: 1.0' ."\n"; 
   $headers .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '"' . "\n\n"; 

   $messagebody = 'This is a multi-part message in MIME format.'. "\n"; 
   $messagebody .= '--' . $boundary . "\n"; 
   $messagebody .= 'Content-Type: text/plain; charset=ISO-8859-1' ."\n"; 
   $messagebody .= 'Content-Transfer-Encoding: 8bit'. "\n\n"; 
   $messagebody .= $message2."\n\n".$foot . "\n"; 
   $messagebody .= '--' . $boundary . "\n"; 
   $messagebody .= 'Content-Type: text/HTML; charset=ISO-8859-1' ."\n"; 
   $messagebody .= 'Content-Transfer-Encoding: 8bit'. "\n\n"; 
   $messagebody .= $messageHTML2."<p>".$foot."</p></body></html>\n"; 
   $messagebody .= '--' . $boundary . "--\n"; 

   $mailOk=mail($to, $subject,$messagebody, $headers); 
Den Fehler dabei macht der leere Empfänger in der Zeile:

Code: Alles auswählen

mail('', $subject,'', $headers); 
Vielleicht hilft das auch jemanden anderen weiter.
Gesperrt