mb_send_mail

関数の概要

mb_send_mail は、PHPで日本語などのマルチバイト文字を含むメールを正しく送信するための関数です。通常の mail() 関数では文字化けしやすい日本語メールに対応しており、エンコーディングやヘッダーの設定を簡単に行えます。主に日本語環境でのメール送信に利用されます。

パラメータの説明

  • to(string):メールの宛先アドレス(例:example@example.com)。複数の宛先はカンマ区切りで指定可能。
  • subject(string):メールの件名。マルチバイト文字も正しく処理されます。
  • message(string):メール本文。文字コードに注意し、適切にエンコードされた文字列を使用します。
  • headers(string|null):追加のメールヘッダー(FromやCc、Bccなど)。省略可能。
  • parameters(string|null):sendmailに渡す追加パラメータ。省略可能。

戻り値

メールの送信に成功すると true を返し、失敗すると false を返します。送信成功=メールが正常に送信処理されたことを意味しますが、必ずしも受信者に届いた保証ではありません。

使用例

基本的な使い方

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

$to = "user@example.com";
$subject = "こんにちは";
$message = "これはテストメールです。";
$headers = "From: sender@example.com";

if(mb_send_mail($to, $subject, $message, $headers)){
    echo "メールを送信しました。";
} else {
    echo "メール送信に失敗しました。";
}

日本語設定の指定と、基本的なメール送信の流れです。最低限のヘッダーも含めています。

複数の宛先に送る場合

$to = "user1@example.com, user2@example.com";
$subject = "お知らせ";
$message = "複数の宛先に送る例です。";
$headers = "From: sender@example.com";

mb_send_mail($to, $subject, $message, $headers);

宛先をカンマで区切ることで複数人に送信できます。

CCやBCC、エンコーディングを指定する場合

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

$to = "user@example.com";
$subject = "打ち合わせのご案内";
$message = "日時:来週月曜日 10時n場所:会議室A";
$headers = "From: sender@example.comrn";
$headers .= "Cc: manager@example.comrn";
$headers .= "Bcc: admin@example.com";

if(mb_send_mail($to, $subject, $message, $headers)){
    echo "メールを送信しました。";
}

CCやBCCをヘッダーに追加し、複数の関係者に同時にメールを送る例です。

関連する関数

  • mail() – PHPの標準メール送信関数。日本語処理は自力で行う必要あり。
  • mb_language() – mb_send_mail が日本語メールを送る際の言語設定に使用。
  • mb_internal_encoding() – 内部文字エンコーディングの設定。mb_send_mailでの日本語メール処理に重要。
  • mb_encode_mimeheader() – メールヘッダーの日本語エンコードに使う関数。

まとめ

mb_send_mail はPHPで日本語メールを送信するときに欠かせない関数です。文字コードの設定や適切なヘッダーの指定を行うことで、文字化けなく確実にメールを送ることができます。初心者でも使いやすく、実務でも広く利用されているため、メール送信処理にはぜひ活用しましょう。