Question

Je travaille sur un site Web où les utilisateurs créent leurs comptes. J'ai besoin d'envoyer des e-mails aux utilisateurs sur de nombreux océans. Par exemple, lors de l'inscription, du mot de passe oublié, du résumé de la commande, etc. Je souhaite utiliser des modèles d'e-mails pour cela. J'ai besoin de vos suggestions pour cela. Je veux utiliser un moyen si je change de modèle de messagerie ou de connexion en moins de temps et de modifications.

J'ai pensé à la manière suivante:

J'ai une table pour des modèles d'e-mail comme ceci:

id
emailSubject
emailBody
emailType

Par exemple, lorsque l'utilisateur a oublié le mot de passe:

identifiant:

1

Sujet du courriel:

ABC: Link for Password Change

corps de l'e-mail:

<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>

EmailType:

ForgotPassword

Préparer les données d'e-mail:

$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";

Maintenant, transmettez tous les champs à cette fonction pour envoyer un e-mail:

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
}

J'ai prévu d'utiliser la méthode ci-dessus. Pouvez-vous suggérer une meilleure façon ou un changement dans la logique ci-dessus.

Merci.

Était-ce utile?

La solution

J'utiliserais Zend_View. Stockez vos modèles /views/email/EMAILNAME.phtml, créer un Zend_View Objectif avec le modèle de messagerie requis et passez-le les données requises.

Autres conseils

Du haut de ma tête, si non testé ... mais quelque chose de similaire devrait fonctionner:

$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' ) );

Comme mentionné précédemment, Zend_View est la route. Voici comment je fais ceci:

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

Utilisez MarkDowify pour secouer en texte brut:

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

Mail de configuration:

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

Puis configurer le transport et envoyer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top