2009-07-21 4 views
1

Ich möchte einen Newsletter mit PHPMAiler senden. Der Newsletter funktioniert, aber ich frage mich, ob es eine bessere Option dafür gibt.Was ist der richtige Weg, Bilder PHPMailer mit einer HTML-E-Mail einzubetten?

Was ich habe ist.

  1. HTML-Seite
  2. Bilder

Nach wie mein Code sieht

$mail = new PHPMailer(); 

//Adding the body 
$body = file_get_contents('template/index.htm'); 

$mail->Subject = "PHPMailer Test Subject via mail(), basic"; 

$mail->AltBody = "To view this message, please use an HTML compatible email viewer!"; 


$mail->SetFrom('xxxxxxx', 'xxxxxxxxxx'); 

$address = "[email protected]"; 
$mail->AddAddress($address, "xxxxxxx"); 

$mail->AddEmbeddedImage("template/images/bullet_point.gif","1"); 
$mail->AddEmbeddedImage("template/images/template_1_01.gif","2"); 
$mail->AddEmbeddedImage("template/images/template_1_03.gif","3"); 


$mail->MsgHTML($body); 

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

I file_get_contents die HTML-Seite zu erhalten verwenden folgt und AddEmbeddedImage Bilder einzubetten, ist jetzt ein Möglichkeit, nur die HTML-Seite an PHPMailer zu übergeben, und dass PHP Mailer diese Bilder automatisch einbetten wird?

+0

Sie können nur Bilder aus der externen Quelle laden, wenn dies Ihren Anforderungen entspricht. Mails wären kleiner zu senden und zu empfangen. – usoban

+0

Dies funktioniert nicht in meiner Situation, da die Bilder in jeder Phase verschoben werden könnten – Roland

Antwort

1

Ich glaube nicht, was Sie versuchen zu tun ist (automatisch erforderliche Bilder) mit PHPMailer "von Grund auf neu".

Vielleicht könnten Sie den HTML-Code analysieren, um die Liste der Bilder zu erhalten, auf die er verweist? Es gibt mindestens 2 Möglichkeiten, das zu tun:

  • mit rexexes; im Allgemeinen nicht die beste Möglichkeit, Dinge zu tun, wenn Sie versuchen, Daten aus HTML zu extrahieren - und Sie sind ^^
  • ein anderer (wahrscheinlich) besser Weg wäre DOMDocument::loadHTML auf den HTML-Inhalt aus Ihrer Datei geladen (die Ausgabe von ? file_get_contents), und die Arbeit mit den Methoden der DOMDocument (und, warum nicht, DOMXPath)

die Bilder zu sehen, ich nehme an, Sie <img> Tags in Ihrer E-Mail, mit src Attribute haben; Das Ziel ist es, die Werte dieser zu finden ;-)

Sobald Sie die Liste der Bilder Pfad haben, iterieren Sie über sie, und rufen Sie $mail->AddEmbeddedImage auf jedem von ihnen.

Ich nehme an, dass würde gut funktionieren (habe nicht versucht, aber ich sehe nicht, warum es nicht).

Als eine Nebenbemerkung, die andere Möglichkeit wäre, die Bilder auf Ihrem Server für ein paar Tage/Wochen/Monate zu halten, und nicht in der Post enthalten; es würde die E-Mails kleiner machen, was bedeutet:

  • weniger Bandbreite auf Ihrer Seite verbrachte auf jedem abgebrannte
  • weniger Bandbreite (wenn Ihr viele Mails senden, ist es durchaus eine amout von Bandbreite darstellen kann) Ihre Kunden Seite - was auch für sie ist schön ^^
  • weniger Platz auf ihren Festplatten verwendet ;-)

Und die Bilder, um sicherzustellen, nicht auf dem Server gelöscht/ersetzt erhalten, bevor Ein paar Wochen/Monat, können Sie ein neues Verzeichnis für jeden Newsletter erstellen, mit seinen Bildern - und hin und wieder löschen Sie die Verzeichnisse älter als X Tage.

+0

Danke für Ihre wertvolle Post !!! – Roland

+0

Gern geschehen :-) Viel Spaß! –

Verwandte Themen