Documentation

エンコーディング - Zend_Mail

エンコーディング

テキストおよび HTML メッセージの本文は、デフォルトでは quotedprintable 方式でエンコードされます。 メッセージヘッダーもbase64を setHeaderEncoding() で指定しなければ quotedprintable 方式でエンコードされます。 もしあなたがラテン文字ベースではない言語を使う場合、 base64 がより適切でしょう。 その他の添付ファイルは、デフォルトでは base64 でエンコードされますが、 addAttachment() のコール時に変更したり MIME パートオブジェクトに後から代入して変更することもできます。 7Bit エンコーディングおよび 8Bit エンコーディングは、 現在はバイナリデータにのみ適用可能です。

ヘッダ、特に subject のエンコーディングは、油断のならない話題です。 Zend_Mime は現在、quoted printable ヘッダを RFC-2045 にもとづいてエンコードするアルゴリズムを自前で実装しています。 iconv_mime_encode および mb_encode_mimeheader には、特定の文字セットにおける問題があるからです。 このアルゴリズムではヘッダを空白文字でのみ区切るので、 推奨される長さである 76 文字を超えるヘッダができてしまう可能性があります。 そんな場合は、次の例と同様にヘッダのエンコード方式を BASE64 に変更しましょう。

  1. // デフォルトは Zend_Mime::ENCODING_QUOTEDPRINTABLE です
  2. $mail = new Zend_Mail('KOI8-R');
  3.  
  4. // KOI8-R で表現されるロシア語はラテン文字ベースの言語と
  5. // 大きく異なるので、Base64 エンコーディングに変更します
  6. $mail->setHeaderEncoding(Zend_Mime::ENCODING_BASE64);

Zend_Mail_Transport_Smtp は、行頭がドット 1 文字あるいはドット 2 文字の場合にその行をエンコードします。これにより、 SMTP プロトコルに違反するメールを作成しないようにします。

Copyright

© 2006-2019 by Zend, a Rogue Wave Company. Made with by awesome contributors.

This website is built using zend-expressive and it runs on PHP 7.

Contacts