【PHP】メールの送信
PHPでメールの送信を行う方法をまとめています。
mail関数を使うだけ
PHPでメールの送信を行う場合、mail関数を使って1行で行えます。
mail("送信先のアドレス", "メールのタイトル", "メールの本文", "from: " . "送信元アドレス");
第1引数に送信先のアドレスを、第2引数にメールのタイトルを、第3引数にメールの本文を、第4引数には送信元アドレスを指定します。
メールの送信が出来た場合はtrueを、失敗した場合はfalseを返します。
留意点を以下に記述しますが、詳しくはmail関数のマニュアルを見てください。
留意点
メールの本文(第3引数)の改行コードは、CRLF(\r\n)となります。また、各行の長さは70文字を超えてはいけません。
第4引数はメールヘッダの最後に挿入される文字列で、「From」「Cs」「Bcc」の指定を行います。複数のヘッダを追加する場合、CRLF(\r\n)で区切ります。
メールを送信する際は、必ずFromヘッダをつけなければなりません。
メール送信プログラム
以上を踏まえてPHPでメールを送信する基本のプログラムは以下のようになると思います。
<?php //送信先アドレス $to_mail_address = ""; //メールタイトル $mail_title = ""; //メール本文 $mail_contents = ""; //送信元アドレス $from_mail_address = ""; //mail関数の第3引数は1行70文字なのでwordwrap関数を用いる $mail_contents = wordwrap($mail_contents, 70, "\r\n"); //メールの送信 if (mail($to_mail_address, $mail_title, $mail_contents, "From: " . $from_mail_address)) { echo "メールが送信されました。"; } else { echo "メールの送信に失敗しました。"; } ?>
文字化け対策
mail関数で日本語の文章も問題なく送信できますが、場合によっては文字化けを起こす場合があります。
その場合、というか特に理由がなければエンコード変換を行ってメールを送信するmb_send_mail関数を使用したほうが良いかと思います。
引数はmail関数とほぼ同じですので、上記プログラムのmail関数の部分をmb_send_mail関数に変えるだけでOKです。
文字化けが起きる場合
mb_send_mail関数でも文字化けが起きる場合、mb_language関数とmb_internal_encoding関数で言語と文字コードを指定してみると良いです。
メール送信プログラム
文字化け対策を行ったメール送信プログラムは次のようになると思います。
<?php //現在の言語を設定 mb_language("Japanese"); //内部文字エンコーディングを設定 mb_internal_encoding("UTF-8"); //送信先アドレス $to_mail_address = ""; //メールタイトル $mail_title = ""; //メール本文 $mail_contents = ""; //送信元アドレス $from_mail_address = ""; //メールの送信 if (mb_send_mail($to_mail_address, $mail_title, $mail_contents, "From: " . $from_mail_address)) { echo "メールが送信されました。"; } else { echo "メールの送信に失敗しました。"; } ?>
あわせて読んでほしい!
コメント
まだコメントはありません。