Frage

Ich arbeite an einer Website, auf der Benutzer ihre Konten erstellen. Ich muss E -Mails an Benutzer in vielen Ozeanen senden. Zum Beispiel bei der Anmeldung, Passwort, Passwort vergessen, Zusammenfassung usw. Ich möchte dafür E -Mail -Vorlagen verwenden. Ich brauche Ihre Vorschläge dafür. Ich möchte eine Art und Weise verwenden, wie ich eine E -Mail -Vorlage ändere oder in kürzerer Zeit und Änderungen anmelde.

Ich habe über den folgenden Weg nachgedacht:

Ich habe eine Tabelle für E -Mail -Vorlagen wie folgt:

id
emailSubject
emailBody
emailType

Zum Beispiel, wenn der Benutzer Passwort vergessen hat:

Ich würde:

1

E-Mail Betreff:

ABC: Link for Password Change

Nachrichtentext:

<table border=0>
<tr><td>
   <b> Dear [[username]] <b/>
</td></tr>

<tr><td>
   This email is sent to you in response of your password recovery request. If you want to change your password, please click the following link:<br />
[[link1]]
<br/>
If you don't want to change your password then click the following link:<br/>
[[link2]]
</tr></td>

<tr><td>
   <b>ABC Team</b>
</td></tr>

</table>

E -Mail -Typ:

ForgotPassword

E -Mail -Daten vorbereiten:

$emailFields["to"] = "user@abc.com";
$emailFields["username"] = "XYZ";
$emailFields["link1"] = "http://abc.com/changepassword?code='123'";
$emailFields["link2"] = "http://abc.com/ignorechangepasswordreq?code='123'";
$emailFields["emailTemplate"] = "ForgotPassword";

Übergeben Sie nun alle Felder an diese Funktion, um E -Mails zu senden:

sendEmail( $emailFields ){
 // Get email template from database using emailTemplate name.
 // Replace all required fields(username, link1,link2) in body.
 // set to,subject,body
 // send email using zend or php
}

Ich plante, die obige Methode zu verwenden. Können Sie einen besseren Weg oder eine Änderung der obigen Logik vorschlagen?

Vielen Dank.

War es hilfreich?

Lösung

Ich würde benutzen Zend_View. Speichern Sie Ihre Vorlagen in /views/email/EMAILNAME.phtml, ein ... kreieren Zend_View Objekt mit der erforderlichen E -Mail -Vorlage und übergeben Sie sie die erforderlichen Daten.

Andere Tipps

Auf meinem Kopf, so ungetestet ... aber etwas Ähnliches sollte funktionieren:

$view = new Zend_View();
$view->setScriptPath( '/path/to/your/email/templates' );
$view->assign( $yourArrayOfEmailTemplateVariables );
$mail = new Zend_Mail();
// maybe leave out phtml extension here, not sure
$mail->setBodyHtml( $view->render( 'yourHtmlTemplate.phtml' ) );
$mail->setBodyText( $view->render( 'yourTextTemplate.phtml' ) );

Wie vorab erwähnt, Zend_View ist die Art. So mache ich das:

$template = clone($this->view);
$template->variable = $value;
$template->myObject = (object)$array;
// ...
$html = $template->render('/path/filename.phtml');

Verwenden Sie Markdownify, um zu verdecken, um einen einfachen Text zu erzielen:

$converter = new Markdownify_Extra;
$text = $converter->parserString($html);

Setup Mail:

$mail = new Zend_Mail();
$mail->setBodyHtml($html);
$mail->setBodyText($text);

Dann Transport einrichten und senden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top