HTMLメールを送信するには、本文をセットする setBody の代わりに setHtmlメソッド でHTMLをセットします。
$mail = new Sabel_Mail("ISO-2022-JP");
$mail->setFrom("from@example.com");
$mail->setTo("to@example.jp");
$mail->setSubject("subject");
$html = <<<HTML
<html>
<body>
<p>Hello!</p>
<p><b>Hello!!</b></p>
<p><i>Hello!!!</i></p>
</body>
</html>
HTML;
$mail->setHtml($html);
$mail->send();
HTMLメールに対応していないMUAを考慮し、通常の本文(代替テキスト)もセットするほうが望ましいでしょう。以下のように両方セットされた場合、自動的に Content-Type を "multipart/alternative" にします。多くの場合、HTMLメール非対応のMUAでは代替テキストが表示されます。
$mail = new Sabel_Mail("ISO-2022-JP");
$mail->setFrom("from@example.com");
$mail->setTo("to@example.jp");
$mail->setSubject("subject");
$body = "Hello World!!";
$html = <<<HTML
<html>
<body>
<p><b>Hello World!!</b></p>
</body>
</html>
HTML;
$mail->setBody($body);
$mail->setHtml($html);
$mail->send();
インライン画像を使用するとHTMLメールに画像を埋め込むことが可能です。generateContentIdメソッド で "ランダム値@ドメイン" 形式のコンテンツIDを生成できますが、対象のMUAがこの形式をサポートしていない場合などはこのメソッドを使用せずMUAに合わせた形式で生成してください。
※generateContentIdメソッド をコールする前に、setFromメソッドで送信者をセットしてください。送信アドレスのドメインをコンテンツIDのドメイン部に使用するためです。
$cid1 = $mail->generateContentId();
$cid2 = $mail->generateContentId();
$html = <<<HTML
<html>
<body>
<p><img src="cid:{$cid1}" /></p>
<p><img src="cid:{$cid2}" /></p>
</body>
</html>
HTML;
$htmlPart = $mail->createHtmlPart($html);
$htmlPart->addImage($cid1, "/path/to/test1.jpeg", "image/jpg");
$htmlPart->addImage($cid2, "/path/to/test2.gif", "image/gif");
$mail->setHtml($htmlPart);
$mail->send();
なお、addImageメソッド の第3引数のMIMEタイプは省略可能で、その場合は内部で
get_mime_type関数 によりMIMEタイプを自動で取得します。
$htmlPart->addImage($cid1, "/path/to/test1.jpeg");
$htmlPart->addImage($cid2, "/path/to/test2.gif");
下記のように、ファイルデータ/MIMEタイプ/エンコーディング方式("base64" or "quoted-printable")を配列で渡すことも可能です。
$htmlPart->addImage($cid1, array(
"data" => file_get_contents("/path/to/test1.jpeg"),
"mimetype" => "image/jpeg",
"encoding" => "base64"
));
"data" の代わりに "path" としてファイルパスを指定することも可能です。
$htmlPart->addImage($cid1, array(
"path" => "/path/to/test1.jpeg",
"mimetype" => "image/jpeg",
"encoding" => "base64"
));