4

我正在通过 Zend_Mail 创建一个包含动态内容的时事通讯,但是我想针对 W3C 验证生成的 HTML 代码,有没有办法让整个电子邮件代码发送出去,这样我就可以对其进行验证?getBodyHtml 函数没有正确返回代码,因为它<tr>=0D=0A=<td width=3D"100%">=0D=0A在电子邮件中添加了以下内容:

4

1 回答 1

6

它像这样返回 HTML,因为它使用带引号的可打印编码对其进行编码,这就是在邮件消息中实际发送内容的方式。

如果您想获取没有编码的内容,可以尝试以下操作:

$part = $mail->getBodyHtml();   // returns Zend_Mime_Part
if ($part !== false && $part instanceof Zend_Mime_Part) {
    $html = $part->getRawContent(); // returns the raw, unencoded content
}

当您使用 Zend_Mail::setBodyHtml() 设置正文 HTML 时,您可以指定编码。函数原型是setBodyHtml($html, $charset = null, $encoding = Zend_Mime::ENCODING_QUOTEDPRINTABLE)

有效的选项是

  • Zend_Mime::ENCODING_7BIT
  • Zend_Mime::ENCODING_8BIT
  • Zend_Mime::ENCODING_QUOTEDPRINTABLE(默认)
  • Zend_Mime::ENCODING_BASE64

如果可能,您可以在调用 setBodyHtml 之前验证 HTML,或者使用上面显示的方法检索原始的、未编码的内容。否则 getBodyHtml() 将以编码格式返回 HTML。

于 2011-11-29T18:47:30.490 回答