use*_*990 4 php html-email zend-mail zend-framework2
Zend框架更改了Zend_Mail对象,因此它不再使用setBodyHtml()方法来创建HTML电子邮件.
有谁知道如何使用ZF2邮件组件创建HTML电子邮件?到目前为止,我尝试过:
$html = new \Zend\Mime\Part($htmlText);
$html->type = \Zend\Mime\Mime::TYPE_HTML;
$html->disposition = \Zend\Mime\Mime::DISPOSITION_INLINE;
$html->encoding = \Zend\Mime\Mime::ENCODING_QUOTEDPRINTABLE;
$html->charset = 'iso-8859-1';
$body = new \Zend\Mime\Message();
$body->addPart($html);
$message = new \Zend\Mail\Message();
$message->setBody($body);
$message->addTo('myemail@com.com', 'User1');
$message->addFrom('myemail@com.com', 'User2');
$message->setSubject('Test');
Run Code Online (Sandbox Code Playgroud)
生成的电子邮件是:
MIME版本:1.0
内容类型:text/html; 字符集= ISO-8859-1
Content-Transfer-Encoding:quoted-printable
内容 - 处置:内联
来自:XYZ
上个月日志文件的报告= 0A = 09 = 09 = 09 = 0A = 09 =
=> 09 = 09 = 0A = 09 = 09 = 09 测试 = 0A = 09 = 09 = 09 = 0A = 09 = 09 = 09
L>
事实证明,我在\ Zend\Mail\Header组件中找到了一个问题.
我使用基于Linux的机器来托管我的php机器,这意味着电子邮件中的每个标题行都应该只附加"\ r \n".对于Windows,它是"\ r \n".
\ Zend\Mail\Header文件中的常量EOL设置为"\ r \n",如果从Linux计算机发送,则所有标题都会出现在电子邮件中.
这里的最佳实践是使用PHP_EOL常量,该常量自动检测平台并使用CORRECT行结束代码.
解决这个问题:
您需要将\ Zend\Mail\Header EOL常量更新为等于PHP_EOL.此外,如果使用UTF-8,您必须确保它是您的消息上调用的最后一件事.必须在身体设定后进行.
我给ZF2 2.0团队打了一张机票来看看它
这是一个有效的例子:
$html = '' //my html string here
$m = new \Zend\Mail\Message();
$m->addFrom('joe@me.com', 'Joe Schmo')
->addTo('ally@me.com', 'Ally Joe')
->setSubject('Test');
$bodyPart = new \Zend\Mime\Message();
$bodyMessage = new \Zend\Mime\Part($html);
$bodyMessage->type = 'text/html';
$bodyPart->setParts(array($bodyMessage));
$m->setBody($bodyPart);
$m->setEncoding('UTF-8');
//send your message now
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16402 次 |
| 最近记录: |