ما هي أفضل طريقة لاستخدام قالب البريد الإلكتروني في Zend / PHP

StackOverflow https://stackoverflow.com/questions/2416217

سؤال

أنا أعمل على موقع على شبكة الإنترنت حيث يقوم المستخدمون بإنشاء حساباتهم. أحتاج إلى إرسال بريد إلكتروني إلى المستخدمين على العديد من المحيطات. على سبيل المثال عند الاشتراك، نسيت كلمة المرور، ملخص الطلب، إلخ. أريد استخدام قوالب رسائل البريد الإلكتروني لهذا. أحتاج إلى اقتراحاتكم لهذا. أريد استخدام طريقة إذا قمت بتغيير أي قالب بريد إلكتروني أو تسجيل الدخول في وقت أقل وتغييرات.

لقد فكرت في الطريقة التالية:

لدي جدول لقوالب البريد الإلكتروني مثل هذا:

id
emailSubject
emailBody
emailType

على سبيل المثال عندما نسيت المستخدم Forgot Password:

هوية شخصية:

1

موضوع البريد الإلكتروني:

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>

Email Type:

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
}

لقد تخططت لاستخدام الأسلوب أعلاه. هل يمكنك اقتراح طريقة أفضل أو بعض التغيير في المنطق أعلاه.

شكرًا.

هل كانت مفيدة؟

المحلول

كنت أستخدم 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);

ثم إعداد النقل وإرسالها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top