php-mailer und html mit php-Variablen
Hallo, ich bin versucht, senden Sie html E-Mails mit der php-mailer-Klasse. Das problem ist, ich möchte incllude php-Variablen in meiner E-Mail während der Verwendung enthält, um die Dinge organisiert. Hier mein php-mailer....
$place = $data['place'];
$start_time = $data['start_time'];
$mail->IsHTML(true); //set email format to HTML
$mail->Subject = "You have an event today";
$mail->Body = file_get_contents('../emails/event.html');
$mail->Send(); //send message
meine Frage ist, ist es möglich, Variablen in php event.html ? ich habe versucht, dies ohne Glück (unten ist event.html)..
<table width='600px' cellpadding='0' cellspacing='0'>
<tr><td bgcolor='#eeeeee'><img src='logo.png' /></td></tr>
<tr><td bgcolor='#ffffff' bordercolor='#eeeeee'>
<div style='border:1px solid #eeeeee;font-family:Segoe UI,Tahoma,Verdana,Arial,sans-serif;padding:20px 10px;'>
<p style=''>This email is to remind you that you have an upcoming meeting at $place on $start_time.</p>
<p>Thanks</p>
</div>
</td></tr>
</table>
Funktioniert es, wenn du es machen "event.php" und dann richtig abgrenzen echo für die Variablen?
Das wäre noch einfach den Inhalt der Datei.
Ja, ich glaube, ich bin zu denken packte Sie die Seite mit cURL sollte das ausführen der php-innerhalb der Ziel.
True, wenn Sie schlagen es als eine remote-URL, aber dann ist es in seinem eigenen verlangen und dann ist es auch die öffentlichkeit, die bedeutet, dass Sie don ' T haben Zugriff auf die gleichen Variablen, die Sie bereits eingerichtet haben, und Sie haben, um mit jeder möglichen injection-Angriffe.
Das wäre noch einfach den Inhalt der Datei.
include
/require
ist der einzige Weg, um das ausführen einer PHP-Datei.Ja, ich glaube, ich bin zu denken packte Sie die Seite mit cURL sollte das ausführen der php-innerhalb der Ziel.
True, wenn Sie schlagen es als eine remote-URL, aber dann ist es in seinem eigenen verlangen und dann ist es auch die öffentlichkeit, die bedeutet, dass Sie don ' T haben Zugriff auf die gleichen Variablen, die Sie bereits eingerichtet haben, und Sie haben, um mit jeder möglichen injection-Angriffe.
InformationsquelleAutor tytyguy | 2011-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, sehr leicht mit gehören und ein kurzes Helfer-Funktion:
Den
get_include_contents
Funktion ist mit freundlicher Genehmigung des PHPinclude
- Dokumentation, leicht modifiziert, um ein array von Variablen.Wichtig: Seit Ihr enthalten ist, ist die Verarbeitung innerhalb einer Funktion, der Umfang der Ausführung des PHP-template-Datei (
/emails/event.php
) ist in dieser Funktion den Rahmen (keine Variablen sofort zur Verfügung neben super globalsDeswegen habe ich Hinzugefügt
extract($variablesToMakeLocal)
— es extrahiert alle array-Schlüssel von$variablesToMakeLocal
als Variablen in der Funktion Umfang, was wiederum bedeutet, dass Sie im Rahmen der die Datei eingeschlossen werden.Da hatte Sie bereits
place
undstart_time
im$data
array, das ich einfach an, dass gerade in der Funktion. Möchten Sie vielleicht, um bewusst sein, dass dies die Extraktion aller Schlüssel innerhalb$data
— Sie können oder nicht wollen, dass.Beachten Sie, dass nun Ihre Vorlage-Datei ist die Verarbeitung, wie eine PHP-Datei, so dass alle die gleichen Vorbehalte und syntax-Regeln. Sollten Sie nicht aussetzen bearbeitet werden, die außerhalb der Welt, und Sie müssen
<?php echo $place ?>
Ausgabe-Variablen, wie in jeder PHP-Datei.$_SESSION
(oder$_POST
) Arrays NICHT übergeben werden müssen, um$variablesToMakeLocal
?Richtig, Sie kann zugegriffen werden sowieso (Sie sind superglobals), aber ich würde wahrscheinlich wählen, um es zu übergeben, so dass ich könnte bereinigen, die Daten vorher und so die Funktion könnte mehr tragbar (D. H. verwendet, die mit Daten aus anderen Quellen, statt die Vorlage oder Funktion immer mit
$_SESSION
.Vielen Dank, es funktioniert perfekt für mich.
Ich bin unsicher, wie bekomme ich diese zu arbeiten.. ich setze $varsToMakeLocal = array('$ANE-Mail' => $toEmail, '$toName' => $toName); und ich versuche, Ihre $post->Body = $this->get_include_contents($htmlfile, $varsToMakeLocal); aber auch die E-mail ist intakt und die Variablen nicht ersetzt zu bekommen.
InformationsquelleAutor Nicole
Paar Möglichkeiten, es zu tun:
Token Vorlage
Token Mailer
Muster
Puffer Mailer
InformationsquelleAutor prodigitalson
Sie können Variablen in der html-E-Mail und dann Mach eine
string_replace
so erscheint der Inhalt in der E-Mail anstelle der Variablen:Dies ist das setup, das für mich gearbeitet. Es nicht TROCKEN vielleicht, aber es funktioniert.
InformationsquelleAutor silverliebt
Mit prodigitalson die token-Methode, die folgende für mich gearbeitet. PHP-code war:
HTML war einfach:
Den
eregi_replace
besser funktioniert, dassstrtr
in meinem Fall - (letzteres funktionierte überhaupt nicht).InformationsquelleAutor Nick