Каков наилучший способ использования шаблона электронной почты в Zend / PHP

Я работаю над сайтом, на котором пользователи создают свои учетные записи. Мне нужно отправить электронную почту пользователям во многих океанах. Например, при регистрации, забыли пароль, резюме заказа и т. Д. Я хочу использовать шаблоны писем для этого. Мне нужны ваши предложения. Я хочу использовать способ, который, если я изменю любой шаблон электронной почты или логин за меньшее время и изменения.

Я подумал о следующем:

У меня есть таблица для шаблонов электронной почты:

id emailSubject emailBody emailType 

Например, когда пользователь забыли пароль:

Я бы:

 1 

Тема письма:

 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 

Подготовить данные электронной почты:

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

Я планировал использовать вышеописанный метод. Можете ли вы предложить лучший способ или какое-то изменение в логике выше.

Благодарю.

Related of "Каков наилучший способ использования шаблона электронной почты в Zend / PHP"

Я бы использовал Zend_View . Сохраните свои шаблоны в /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); 

Затем настройте транспорт и отправьте.