Domanda

Sto lavorando su un sito web dove gli utenti creano i loro conti. Ho bisogno di inviare e-mail agli utenti su molti oceani. Per esempio, quando l'iscrizione, ha dimenticato la password, riepilogo dell'ordine ecc voglio usare email modelli per questo. Ho bisogno dei vostri suggerimenti per questo. Voglio usare un modo che Se cambio qualsiasi modello e-mail o di accesso in meno tempo e modifiche.

Ho pensato al modo seguente:

Ho una tabella per i modelli di posta elettronica come questo:

id
emailSubject
emailBody
emailType

Per esempio quando l'utente ha dimenticato la password:

id:

1

EmailSubject:

ABC: Link for Password Change

emailBody:

<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

preparare i dati 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";

Ora Passare i tutti i campi a questa funzione per inviare 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
}

I programmato di usare metodo di cui sopra. Si può suggerire il modo migliore o qualche cambiamento nella logica di cui sopra.

Grazie.

È stato utile?

Soluzione

userei Zend_View. Memorizza i tuoi modelli nella /views/email/EMAILNAME.phtml, creare un oggetto Zend_View con il modello e-mail richiesto e passarlo i dati richiesti.

Altri suggerimenti

Al largo della parte superiore della mia testa, in modo non testato ... ma qualcosa di simile dovrebbe funzionare:

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

Come accennato in precedenza, Zend_View è il modo. Ecco come faccio questo:

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

Usa Markdownify per convertire in testo semplice:

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

posta Setup:

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

Poi Trasporti configurazione e inviare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top