2016-07-03 3 views
0

Ich benutze Joomla integrierte Version von PHPmailer, um eine E-Mail zu senden. Ich habe schon gelesen this answer, aber etwas funktioniert nicht für mich. Eine Exception wird in der AltBody-Zeile ausgelöst und das PHP erreicht die Send-Zeile nicht.Senden Sie eine E-Mail mit HTML und Text

Durch das Auskommentieren der AltBody-Zeile wird die HTML-Version meiner Mail gesendet und es funktioniert einwandfrei.

ich auch setBody statt Körper verwendet, weil Körper einfach nicht funktioniert (von weiter getan Lesung heute Ich vermute, das ist, weil ich $mail->Body($msg) statt $mail->Body = $msg verwendet, und „Body ein Attribut ist, kein Verfahren“, sagte Marc B in einem Kommentar.)

Ist dies mit mir verwandt, nicht mit SMTP?
Kann dies aufgrund des Inhalts sein, den ich AltBody zuweisen möchte? (Es ist eine Variable, die durch Verketten mehrerer Textzeichenfolgen erstellt wird, die \ n für Zeilenumbrüche verwenden.)
Liegt das an etwas anderem?

Leider kann ich den Code des gesamten PHP nicht posten. Ich werde versuchen, mich daran zu erinnern, und ich werde es morgen überprüfen und nach und nach korrigieren.

$msg = '<p>some html'; 
$msg .= 'some more html. Escaped "apostrophes" like \' used because of language </p>'; 
$txt = "some text,\nusing doublequotes as the delimiter."; 

$mail = JFactory::getMailer(); 
$mail->isHTML(true); 
$mail->CharSet = "text/html; charset=UTF-8;"; 
$mail->setSender('[email protected]'); 
$mail->addRecipient('[email protected]'); 
$mail->setFrom('[email protected]'); 
$mail->setSubject('test mail'); 
$mail->setBody($msg); 
$mail->AltBody($txt); # not working, commenting the line out works. 
$mail->ClearCCs(); 
$mail->ClearBCCs(); 
$mail->AddBCC('[email protected]'); 
$mail->ClearAttachments(); # I know, this is not a cycle. But I'm not sure about injection, better delete it in case someone managed to add it. 
$mail->ClearCustomHeaders(); 
if (empty($honeypot)) { 
    $mail->send(); 
    exit('Mail sent'); 
} 

Das ist alles in einem try, mit dem catch Ausnahmen fangen und Echo ihnen.

+0

Wie wollen Sie jemand erwarten, dass Ihr Code debuggen, wenn Sie nichts posten? Lesen Sie die PHPMailer-Dokumentation, um zu sehen, wie Sie AltBody setzen – Synchro

+0

@Synchro Ich habe es geschafft, etwas mehr zu kopieren. Ich hoffe es ist genug. – Zachiel

+0

Lesen Sie einfach die PHPMailer Dokumente und den Code. Es gibt keine setBody-Methode; Body und AltBody sind Eigenschaften, also setze sie einfach. Sie müssen clearAttachments nicht aufrufen. – Synchro

Antwort

1

Bitte versuchen Sie es mit dem Code, kann es hilft Ihnen:

$mail = JFactory::getMailer(); 
$mail->isHTML(true); 
$mail->CharSet = "text/html; charset=UTF-8;"; 
$mail->addRecipient($email_to); 
$mail->addReplyTo($email, $name); 
$mail->setSender(array($mailfrom, $fromname)); 
$mail->setSubject($subject); 
$mail->setBody($body); 
$sent = $mail->Send(); 
+0

Dies wird von einer Adresse ohne Antwort gesendet. Keine Notwendigkeit, addReplyTo in meinem Fall zu verwenden. Es ist auch nicht nötig aus dem gleichen Grund einen fromname hinzuzufügen. Wie löst das mein Problem? – Zachiel

+0

Bitte probieren Sie den gleichen Code mit Leerzeichen aus Name und Kommentar Replayto Linie kann sein, dass wird gut funktionieren nach Ihrer Anforderung. – bharat

Verwandte Themen