PHPでメール送信を行う方法:mb_send_mail()

PHPではメールを送るための関数が標準で備わっており、簡単にメールを送信することが可能です。ただし日本語でメールを送るためにはいくつか工夫が必要です。

メール送信前の準備

メールを送信する前にまずは日本語で送るための準備が必要になります。言語の指定と文字コードの指定です。ここでは文字コードをUTF-8で指定しています。

mb_language("Japanese"); 
mb_internal_encoding("UTF-8");

メール関数の仕様

メールを実際に送るには mb_send_mail 関数を使用します。

mb_send_mail(送信先, 題名, 本文, ヘッダ);

送信先には送信先のメールアドレスを文字列で指定します。ヘッダにはメールヘッダに追加する文字列を指定します。このメールヘッダに送信元のメールアドレスなどを指定します。これは以下のような文字列を作成し設定します。

From: 送信元メールアドレス
Reply-to: 送信元メールアドレス
CC: CCで送信する送信アドレス
BCC: BCCで送信するアドレス

例えば$emailに送信元のメールアドレスを設定している場合、以下のように$headerを文字列で作成します。

$header = "From: xxx@example.com\nReply-To: yyy@example.com\n";

必要があれば、Cc:やBcc:もこのヘッダに指定します。

メール関数を使用してみる

$to に送信先メールアドレスが入っている場合、以下のようにして送信します。

<?php
mb_language("Japanese"); 
mb_internal_encoding("UTF-8");

$email = "xxxxxx@example.com";
$subject = "テスト"; // 題名 
$body = "これはテストです。\n"; // 本文
$to = 'yyyyy@example.com';
$header = "From: $email\nReply-To: $email\n";
 
mb_send_mail($to, $subject, $body, $header);
?>

送信先メールアドレスはカンマで区切ることで複数指定可能です。ただし、送信先メールアドレスで指定すると送信者には全てのメールアドレスが見えてしまいますので注意が必要です。送信先メールアドレスを見せないためには Bccを使って、ヘッダに指定する必要があります。

まとめ

メールの送信はWebアプリケーションでは非常によく使う処理です。PHPではそれを簡単に実装することができるのでよく覚えておきましょう。


イベント