« PreviousNext »

Entry

qdmailを使用しgmailにHTMLメールを送信する際の注意点

qdmailを使用してHTMLメールを送信する際は、

$mail["body"] = '~HTML~';
$qdmail->html($mail["body"]);

のようにhtmlメソッドを使用してHTMLを設定して送信することになります。

この際qdmailは、HTMLが読めない(またはHTMLを表示しない設定にしている)メーラー用に、自動的に代替テキスト部分を生成してマルチパートメールとしてメールを送信してくれるのですが、この際のマルチパート部分の順序が

HTML部分
代替テキスト部分

という順序になっているため、「マルチパートメールの場合は最後のパートだけを表示する」という設定になっているメーラー(gmailなど)では、「常に代替テキスト部分だけが表示される」という現象になります。(Becky等ではこの現象は発生しません)


この現象は、HTMLメールを送信する際のマルチパート部分の順序を変更するという方法で回避できます。

具体的には、(バージョン1.2.6bの場合)、qdmail.incの340行目付近の、

var    $structure    =array(
  // no inline attachment
  0 => array(
    'multipart/mixed' => array(
      'multipart/alternative'=>array(          
        'html'    =>  1,
        'plain'    =>  1,
        'OMIT'    =>  true,
      ),
      'image'    => 'BOTH', // Available Inline
      'OMIT'    =>  true,
    ),
    'OMIT'    =>  true,
  ),

という箇所の、'html'と'plain'の記述順序を

'multipart/alternative'=>array(          
  'plain'    =>  1,
  'html'    =>  1,
  'OMIT'    =>  true,
),

に変更します。これによりマルチパート部分の順序が

代替テキスト部分
HTML部分

として送信されるようになりますので、gmail等のメーラーでもHTML部分が表示されるようになります。

Page Top

« PreviousNext »