Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Zend/PHP中使用电子邮件模板的最佳方式是什么_Php_Zend Framework_Email Templates - Fatal编程技术网

在Zend/PHP中使用电子邮件模板的最佳方式是什么

在Zend/PHP中使用电子邮件模板的最佳方式是什么,php,zend-framework,email-templates,Php,Zend Framework,Email Templates,我在一个网站上工作,在那里用户创建他们的帐户。我需要向许多海洋上的用户发送电子邮件。例如,注册时,忘记密码,订单摘要等,我想使用电子邮件模板。我需要你的建议。我想用一种方式,如果我改变任何电子邮件模板或登录在更短的时间和变化 我曾考虑过以下方法: 我有一个用于电子邮件模板的表格,如下所示: id emailSubject emailBody emailType 例如,当用户忘记密码时: 身份证: 电子邮件主题: ABC: Link for Password Change 电子邮件正文: &l

我在一个网站上工作,在那里用户创建他们的帐户。我需要向许多海洋上的用户发送电子邮件。例如,注册时,忘记密码,订单摘要等,我想使用电子邮件模板。我需要你的建议。我想用一种方式,如果我改变任何电子邮件模板或登录在更短的时间和变化

我曾考虑过以下方法:

我有一个用于电子邮件模板的表格,如下所示:

id
emailSubject
emailBody
emailType
例如,当用户忘记密码时:

身份证:

电子邮件主题:

ABC: Link for Password Change
电子邮件正文:

<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>
准备电子邮件数据:

$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";
现在将所有字段传递到此函数以发送电子邮件:

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
}
我计划使用上述方法。你能建议更好的方法或者改变一下上述逻辑吗


谢谢。

我会使用
Zend\u视图
。将模板存储在
/views/email/EMAILNAME.phtml
中,使用所需的电子邮件模板创建一个
Zend_View
对象,并将所需的数据传递给它。

在我的头顶,因此未经测试。。。但类似的方法也应该奏效:

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

如前所述,
Zend_View
是一种方式。我是这样做的:

$template = clone($this->view);
$template->variable = $value;
$template->myObject = (object)$array;
// ...
$html = $template->render('/path/filename.phtml');
使用Markdownify转换为纯文本:

$converter = new Markdownify_Extra;
$text = $converter->parserString($html);
安装邮件:

$mail = new Zend_Mail();
$mail->setBodyHtml($html);
$mail->setBodyText($text);
然后设置传输和发送。

是否要执行以下操作:
$converter = new Markdownify_Extra;
$text = $converter->parserString($html);
$mail = new Zend_Mail();
$mail->setBodyHtml($html);
$mail->setBodyText($text);