HTMLメールを送信する | Mail

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"
));