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関数を使ってメールを送信していましたが、今後はこのライブラリを使っていこうかと思います。