【初心者向け】PHPでメール送信できる関数mail()を解説!
PHPは国内でもレンタルサーバの環境下等でよく利用されるプログラミング言語であり、お問い合わせ機能などのバックエンドシステムを構築する手段としても用いられることが多いです。
今回は、そんなPHPにおいて、メールを送信できる関数について解説していきます。
関数 mail()
PHPにおいて、メールを送信する機能をバックエンドで実装できるのがmail()という関数です。
メールを送信する処理はメールサーバを介する必要があるため、面倒くさそうなイメージですが、この関数を使えば、プログラミング初心者でも簡単にメールを自動送信させられます。
以下が、実際にメールを送信する場合のコードです。
// mail(宛先[任意のメールアドレス], 題名, 内容);
mail("sample123@sample.com", "ここに題名が入る", "これがメールの本文です。");
このコードを実行すると、一つ目の引数で指定したメールアドレスに、第二引数の題名と第三引数の文字列がメールの本文となって送信されます。
非常に簡単な実装方法ですが、SMTPサーバによって認証されていない環境下では、このコードを実行しても、ただエラーだけが出現します。
HTTPサーバがWEBサイト用のサーバだとすれば、SMTPサーバはメール用のサーバのような存在です。メールのやり取りはあくまでもサーバ間の通信となるため、SMTPサーバを経由せずにメールを一方的に送信することはできません。
レンタルサーバなどでは初めから設定された状態となっていますが、自作のサーバやローカル環境では何もしないままだとSMTPサーバの認証を得られていない状態なので、自分で色々と設定する必要があります。
よくわからないという方は、ひとまず格安のレンタルサーバを借りてみて、その上でプログラムを実行させるのが良いかもしれません。
関数 mb_send_mail()
メールを送信する際、宛先のメールアドレスが存在しないものだったりして、SMTPサーバの通信でエラーが生じることがあります。
お問い合わせフォームから連絡する際をイメージしてみてください。
ユーザの視点として、お問い合わせを一方的に送信した際に、もしSMTPサーバに異常が生じた場合、エラーで送信に失敗した旨を表示してほしいですよね。
前述した関数mail()では、あくまでメールの送信処理を行うだけであり、エラーが出てもそれをプログラムで読み取ることはできません。
(メールの送信リクエストが送れたかどうかは戻り値で判別できますが)
そこで活用するのが、mb_send_mail()という関数です。
mb_send_mail()は、通常の関数mail()の機能に加え、送信の是非を真理値(true もしくは false)で返すことが可能になっています。
以下のようなコードを書くと、メールの送信成功・失敗に合わせて、処理終了後の処理を分岐させられます。
// 基本的な記述はmail()と同じ
// mb_send_mail(宛先[任意のメールアドレス], 題名, 内容);
$boolean = mb_send_mail("sample123@example.com", "ここに題名が入る", "これがメールの本文です。");
if($boolean == true){
// 送信成功の場合
echo("送信が完了しました。");
}else{
// 送信失敗
echo("エラーが発生しました。");
}
まとめ
レンタルサーバを通じてサービスを運用している方にとっては、PHPを用いたメールの送信処理は積極的にマスターしていきたいところです。
使い分けるのであれば、
お問い合わせフォーム等からのリクエストを処理する場合はmb_send_mail()
単にメールの自動送信をしたい場合(「お問い合わせを受け付けました。」と通知したい場合等)はmail()
というように使い分けるのがおすすめです。
実はまだまだ解説できていないニッチな機能もあるため、更に詳しく知りたい方は、
PHPの公式リファレンスを見てみてください、