【PHP】メールの送信

公開日:
更新日:
カテゴリー: 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 "メールの送信に失敗しました。";
}
?>

 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント