Pregunta

Estoy trabajando en un sitio web donde los usuarios crean sus cuentas. Necesito enviar correo electrónico a los usuarios en muchos océanos. Por ejemplo, cuando se registre, olvidé la contraseña, el resumen del pedido, etc. Quiero usar plantillas de correo electrónico para esto. Necesito tus sugerencias para esto. Quiero usar una forma en que cambio cualquier plantilla de correo electrónico o inicio inicio sesión en menos tiempo y cambios.

He pensado en la siguiente forma:

Tengo una mesa para plantillas de correo electrónico como esta:

id
emailSubject
emailBody
emailType

Por ejemplo, cuando el usuario olvidó la contraseña:

identificación:

1

asunto del email:

ABC: Link for Password Change

cuerpo del correo electronico:

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

Type de correo electrónico:

ForgotPassword

Prepare los datos de correo electrónico:

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

Ahora pase todos los campos a esta función para enviar correo electrónico:

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
}

Planeé usar el método anterior. ¿Puede sugerir una mejor manera o algún cambio en la lógica anterior?

Gracias.

¿Fue útil?

Solución

Yo usaría Zend_View. Guarde sus plantillas en /views/email/EMAILNAME.phtml, crear un Zend_View Objeto con la plantilla de correo electrónico requerida y pase los datos requeridos.

Otros consejos

Fuera de la parte superior de mi cabeza, tan sin probar ... pero algo similar debería funcionar:

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

Como se menciono antes, Zend_View es el camino. Así es como hago esto:

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

Use Markdownify para encubrir al texto plano:

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

Correo de configuración:

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

Luego configure el transporte y envíe.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top