PHP 入門

PHP
メール

株式会社 サンエツ

PHPMailerを使用して添付ファイル付メールフォームの作成
PHP 添付ファイル付メールフォームの作成(その2)
htmlのメールフォームから値を受け取ってサーバーから送信するphpファイルを作成します。

phpファイル

  1. 「class.phpmailer.php」を読み込みます。コチラは「PHPMailer_5.2.4.zip」を解凍したフォルダー「PHPMailer_5.2.4」 の中にあります。フォルダー「PHPMailer_5.2.4」の階層が違う場合は

    ../~~~/PHPMailer_5.2.4/class.phpmailer.phpのように変更してください。

    require("PHPMailer_5.2.4/class.phpmailer.php");
  2. 言語の設定をします。以下の文を入れないと文字化けします。

    mb_language("japanese");
    mb_internal_encoding("UTF-8");
  3. メールフォームの場合送信先が普通は同じですので送信先アドレスを入れておきます。

    $to = "info@sanetu.main.jp";
  4. 「$_POST」で「件名」、「本文」、「送信者のメールアドレス」、「差出人名」を受け取ります。


    $body=$_POST['body'];//"本文
  5. 添付ファイルを一時ファイルに保管します。

    $attachfile =$_FILES['upfile']['tmp_name']
  6. /PHPMailerの入れ物を作成します。

    $mail = new PHPMailer();
  7. 半角カナを除くJISコードの日本語文字セットをします。

    $mail->CharSet = "iso-2022-jp";
  8. 普通のメールは「7bit」なので同じように「7bit」にエンコード。

    $mail->Encoding = "7bit";
  9. 送信先の設定

    $mail->AddAddress($to);
  10. 送信者のアドレスをセット

    $mail->From = $from;
  11. メールのMIMEヘッダに設定する文字列をエンコードして差出人名を設定します。

    $mail->FromName = mb_encode_mimeheader(mb_convert_encoding($fromname,"JIS","UTF-8"));
  12. メールのMIMEヘッダに設定する文字列をエンコードして件名(Subject)をセット

    $mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
  13. 文字のエンコードを変換、第一引数は対象の文字列、2番目の引数には変換後のエンコーディングとして 「EUC-JP」、「JIS」などを入れます。3番目の引数は変換前のエンコーディングを入れて本文を セットします。

    $mail->Body = mb_convert_encoding($body,"JIS","UTF-8");
  14. メールにファイルを添付します。「addAttachment」メソッドは第一引数にデータを入れます、 第二引数はMIMEタイプを入力します。 「image/jpeg」とか「image/png」です。但しココがPHPMailer のいいところです、AddAttachment(ファイルパス)で通ります。MIMEタイプなどの規格にとらわれる必要 がありません。下記のように書いてもOKです。

    $mail->AddAttachment($attachfile,$_FILES["upfile"]['name']);
  15. メール送信が出来なっかったら、カスタムエラーにします。

    echo "メールの送信が出来ませんでした。";
    exit;
  16. メール送信が出来たら「~~~~」とhtmlのソースを記入して案内します。

    echo "お問い合わせ有難うございました。~~~~~~
下の画像は送信前の画像です。
送信が完了すると下の画面の表示にかわります。
phpファイルのソースです。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<?php
//レンタルサーバ―の場合はPHPMailer_5.2.4の設置パスを入れる
require("PHPMailer_5.2.4/class.phpmailer.php");
//言語設定、内部エンコーディングを指定する
mb_language("japanese");
mb_internal_encoding("UTF-8"); //省略すると文字がへんてこりんになります
//日本語添付メールを送る
$to = "info@sanetu.main.jp"; //宛先 当社のメールアドレスです。
$subject = $_POST['subject'];//題名
$body=$_POST['body'];//"本文
$from =$_POST['from'];//  送信者のメールアドレス
$fromname=$_POST['fromname'];//差出人名
$attachfile =$_FILES['upfile']['tmp_name'] ; //添付ファイルパス
$mail = new PHPMailer();
$mail->CharSet = "iso-2022-jp";
$mail->Encoding = "7bit";
$mail->AddAddress($to);
$mail->From = $from;
$mail->FromName = mb_encode_mimeheader(mb_convert_encoding($fromname,"JIS","UTF-8"));
$mail->Subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
$mail->Body  = mb_convert_encoding($body,"JIS","UTF-8");
//添付ファイル追加
$mail->AddAttachment($attachfile,$_FILES["upfile"]['name']);
 //メール送信
if(!$mail->Send())
	{
	  echo "メールの送信が出来ませんでした。";	  
	  exit;
	}	
	echo "お問い合わせ有難うございました。<br /><br />
送信内容の確認です。<br /><br />
お名前  :".$fromname." "."様<br /><br />
メールアドレス  :”.$from.”<br /><br />
件名  :”.$subject.”<br /><br />
お問い合わせ内容  :".$body
."<br /><br />
<input type='button' value='戻る' onclick='top.location.href=\"phpsample1.html\"'>";
</body>
</html>
以上がPHPMailerを使用して添付ファイル付メールを送信するサンプルです。 ファイル形式などの専門知識がなくても簡単に添付ファイル付メールフォームを作成できます。

phpファイルの最後の部分にメール送信が完了したらいろいろと案内のメッセージを 入力すると利用者に利便性を与えることが出来ます。

前のページに戻る場合はコチラ↓
株式会社 サンエツ
〒252-1121 神奈川県綾瀬市小園883-1
TEL :0467-76-7228
FAX :0467-77-3448
E-mail :info@sanetu.main.jp
URL : http://sanetu.main.jp