#環境
PHP 5.1.2
qdmail 1.2.6b
#qdmailでのHTMLメール送信のさせ方
基本的な使い方は、下記です。
require_once 'qdmail.php';
$mail = new Qdmail();
$mail -> to( 'address@example.com' , '宛先日本語名' );
$mail -> subject( 'タイトルも日本語で' );
$mail -> html( 'ここに内容をいれます' );
$mail -> from( 'from@example.com' , '配信元日本語名' );
$mail ->send();
#嵌りポイント1:文字コード
UTF-8で合わせる場合は、下記のように指定します。
mb_language('ja');
mb_internal_encoding('UTF-8');
私の環境では「件名」で文字化けしてしまった為に
下記設定を使って文字化けを回避しました。
$mail -> unitedCharset( 'UTF-8' );
#嵌りポイント2:URLをリンクにする
※配信するテキストをユーザに入力してもらう形のツールを
作っていたので、嵌りました。普通にHTML書いていれば、特に気にならないポイントだと思います。
GmailやYahooメールは、自動でURLをリンクにしてくれますが
Becky!ではURLをリンクに自動変換してくれませんでした。
下記記事を参考にURLをリンク変換するとよさそうです。
http://qiita.com/mpyw/items/1e422848030fcde0f29a
#嵌りポイント3:HTMLを表示させないメールクライアントに対応
qdmailではデフォルトで、HTMLが表示できないメールクライアントでは
代替テキストを表示するようになっています。
##Gmail対応
マルチパート部分の順序が「HTML→テキスト」になっている為
Gmailでは、HTMLメールを送信しても、必ずテキスト表示されてしまいます。
下記記事で説明されているように、マルチパート部分の順序を変更します。
http://www.webdesignersblog.jp/archives/2010/04/16184520.php
#嵌りポイント4:HTMLと代替テキストで体裁を合わせる
##preタグ
<pre>タグは、改行方法が「<br />」と「\n」の
2通りあり、HTMLと代替テキストで改行が合わなくなる原因となる為、使わない方がよいです。
##改行
HTMLの代替テキストは「<br />」で改行されますが
複数「<br />」がついていても、1改行しかされません。
複数改行を行う場合は、何かしら1行に文字が入っていないと
ダメなようだったので、半角スペースをひとつ入れて「<br />」を入れる事で
改行させました。
※私が知らないだけで、何か方法があるのかもしれません。
#注意点:文字化け
iso-2022-jpで送信すると、
半角カナ(メールでは基本使わないですが)や機種依存文字、
IBM拡張文字、NEC選定IBM拡張文字で文字化けしました。
http://hal456.net/qdmail/irregular_char
特殊文字を送信する場合は、UTF-8で本文エンコードをbase64に
するのがよいようです。(試してないです)
完全に文字化けしないメール配信ツールを作るのは難しいので
見れない場合は、サーバに保存したHTMLを見てもらう形で逃げるのも手ですかね。