4

Zend_Mail を介して動的コンテンツを含むニュースレターを作成していますが、生成された HTML コードを W3C に対して検証したいのですが、電子メール コード全体を送信して検証できるようにする方法はありますか? <tr>=0D=0A=<td width=3D"100%">=0D=0AgetBodyHtml 関数は、電子メールに次のようなものを追加するため、コードを適切に返しません。

4

1 に答える 1

6

コンテンツがメールメッセージで実際に送信される方法である quoted-printable エンコーディングを使用してエンコードしているため、そのような 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 に答える