JPHPMailerでのメールフォームの作成

メールフォームって自分で作ろうとすると結構面倒なので、クラスとか無いかなぁ、と思ったらJPHPMailerというものを見つけたので、導入レポートです。

JPHPMailer

JPHPMailerは、PHPMailerのラッパークラスです。

mb_send_mailなどと違い、添付ファイルなども送信することが出来ます。

ダウンロードはこちらJPHPMailer
PHP5用、PHPMailer

使い方

[php]

//ライブラリ読み込み
include("./jphpmailer.php");

//言語設定、内部エンコーディングを指定する
mb_language("japanese");
mb_internal_encoding("UTF-8");

//日本語添付メールを送る
$to = "example@example.jp";

$senderAddress = htmlspecialchars($senderAddress, ENT_QUOTES,’UTF-8′);
$senderName = htmlspecialchars($senderName, ENT_QUOTES,’UTF-8′);
$messageSubject = htmlspecialchars($messageSubject, ENT_QUOTES,’UTF-8′);
$messageBody = htmlspecialchars($messageBody, ENT_QUOTES,’UTF-8′);

$mail = new JPHPMailer();

//文字コード設定
$mail->in_enc = "UTF-8";

$mail->addTo($to);
$mail->setFrom($senderAddress,$senderName);
$mail->setSubject($messageSubject );
$mail->setBody($messageBody);

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

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

[/php]

のような感じでメールが送信できます。
デフォルトの文字コードがEUCなので、UTF-8に変換するのを忘れると文字化けします。

また、jphpmailer.phpはデフォルトで、
[php]
require("./phpmailer/class.phpmailer.php");
[/php]

となっているので、ここらへんは適宜書き換える必要がありそうです。もしくは、この行をコメントアウトして、記述するスクリプト本体のほうでincludeしたほうが良いかもです。