画像付きのHTMLメールを送信する

広告

HTMLメールを使う場合にHTMLメールの中で画像を使用する場合は使用する画像ファイルをMail_Mimeクラスで用意されている「addHTMLImage」メソッドを使って指定します。

引数:
  $file  画像ファイル名か、画像データ自身
  $c_type  イメージかファイルの内容の種類
  $name  $fileが画像データの場合の画像ファイル名
  $isfile  $file がファイル名かどうか
戻り値:
  成功時には TRUE、失敗時にはPEAR_Error

1番目の引数に画像ファイル名を指定します。画像ファイル名は記述してあるPHPファイル名からの相対パスで指定します。2番目の引数には画像ファイルの種類をMIMEタイプで指定します。例えば「image/png」や「image/jpeg」です。3番目と4番目の引数は画像をファイルで指定する場合には省略して構いません。

例えば次のように記述します。

$body = <<<EOS
<html>
<head>
<meta http-equiv="Content-Type" Content="text/html;charset=UTF-8">
</head>
<body>
<h1>HTMLメールのテスト</h1>
<p>
HTMLメールのテストです。setHTMLBodyメソッドを使います。
</p>
<p>
<img src="./star.png" width="50" height="50">
</p>
</body>
</html>
EOS;

$mimeObject = new Mail_Mime("¥n");
$mimeObject -> setHTMLBody($body);
$mimeObject -> addHTMLImage("./star.png", "image/png");

サンプルプログラム

では簡単なサンプルで実際に試してみます。

sample12-1.php

<?php
require_once("Mail.php");
require_once("Mail/mime.php");

$params = array(
  "host" => "xxx.xxx.xx",
  "port" => 587,
  "auth" => true,
  "username" => "xxx@xxx.xxx.xx",
  "password" => "xxxxx"
);

$mailObject = Mail::factory("smtp", $params);

$recipients = "xxx@xxx.xxx.xx";

$body = <<<EOS
<html>
<head>
<meta http-equiv="Content-Type" Content="text/html;charset=UTF-8">
</head>
<body>
<h1>HTMLメールのテスト</h1>
<p>
HTMLメールのテストです。setHTMLBodyメソッドを使います。
</p>
<p>
<img src="./star.png" width="50" height="50">
</p>
<p>
星の画像を表示しています。
</p>
</body>
</html>
EOS;

$mimeObject = new Mail_Mime("¥n");
$mimeObject -> setHTMLBody($body);
$mimeObject -> addHTMLImage("./star.png", "image/png");

$bodyParam = array(
  "head_charset" => "ISO-2022-JP",
  "html_charset" => "Shift_Jis"
);

$body = $mimeObject -> get($bodyParam);

$addHeaders = array(
  "To" => "xxx@xxx.xxx.xx",
  "From" => "xxx@xxx.xxx.xx",
  "Subject" => mb_encode_mimeheader("テストメール")
);

$headers = $mimeObject -> headers($addHeaders);

$mailObject -> send($recipients, $headers, $body);

?>

※SMTPサーバやメール送信先などは書き換えて使用して下さい。ポート番号も「Outbound Port25 Blocking」などの関係で25番ポートではなく587番ポートなどが使われていますがこちらも環境に合わせて変更して下さい。

メール送信用PHPを呼び出すためのHTMLファイルを用意しました。

mail12-1.html

<html>
<head><title>PHP TEST</title></head>
<body>

<p>メール送信テスト</p>

<p>
<a href="./sample12-1.php">メール送信</a>
</p>

</body>
</html>

ではメール送信用HTMLファイルをWWWサーバに設置しブラウザで見てみると下記のように表示されます。

画像付きのHTMLメールを送信する

「メール送信」と書かれたリンクをクリックするとメールが送信されます。実際に届いたメールは次のようになります。

画像付きのHTMLメールを送信する

( Written by Tatsuo Ikura )