PHPで添付ファイルを含む日本語メールを送信する

PHPMailerを使うと、簡単にメール(ファイルを添付)を送信することができます。

さらに、下のブログでは、日本語ラッパークラス「JPHPMailer」が公開(LGPLライセンス)されています。

http://techblog.ecstudio.jp/tech-tips/mail-japanese-advance.html
JPHPMailerでPHPMailerを改良したのは次の点です。

  • CharSetやEncodingの設定を不要に
  • addAddress()をaddTo()へ (addAddressも使えます)
  • From,Subject,Bodyなど、プロパティを直接扱うものをメソッドを通して設定するように
  • エラーメッセージの取得をgetErrorMessage()メソッドで。
  • mb_*関連の変換が不要に。(引数でそのまま渡すだけ)
  • 題名が長いメールでも文字化けが起きないように。

このラッパークラスを使うと、下記のようにシンプルに日本語メールを送信することができます。

<?php
//ライブラリ読み込み
require( "./jphpmailer.php" );

//言語設定・内部エンコーディングを指定
mb_language( "japanese" );
mb_internal_encoding( "EUC-JP" );

//日本語添付メールを送る
$to = "hoge@hoge.com"; //宛先
$subject = "○○について"; //題名
$body = "本文です"; //本文
$from = "fuga@fuga.com"; //差出人
$fromname = "ぴよ太郎"; //差出人名
$attachfile = "./file.pdf"; //添付ファイル

$mail = new JPHPMailer();

$mail->addTo( $to );
$mail->setFrom( $from, $fromname );
$mail->setSubject( $subject );
$mail->setBody( $body );

//添付ファイル
$mail->addAttachment( $attachfile );

if( !$mail->send()){
	echo( "メールが送信できませんでした。エラー:".$mail->getErrorMessage());
}
?>

HTMLメールも簡単に送れるようです。

<?php
$mail->setHtmlBody( $htmlbody );
?>

これまでは、mb_send_mail関数を使ってメールを送信していましたが、今後はこのライブラリを使っていこうかと思います。