mail

関数の概要

PHPの mail 関数は、サーバーからメールを送信するための組み込み関数です。この関数を使うことで、簡単に指定した宛先にメールを送ることができます。ユーザー登録時の確認メールや問い合わせフォームの自動返信など、Webアプリケーションでよく使われます。

パラメータの説明

  • to:メールの送信先アドレス。複数の場合はカンマ区切りで複数指定可能。
  • subject:メールの件名。文字コードに注意し、必要に応じてエンコードします。
  • message:メール本文。テキストまたはHTML形式を指定できますが、Content-Typeヘッダーで明示する必要があります。
  • additional_headers(省略可能):送信元アドレスや返信先アドレス、MIMEバージョン、Content-Typeなどの追加ヘッダーを指定します。
  • additional_parameters(省略可能):sendmailコマンドの追加パラメータを渡せます。一般的には使用しません。

戻り値

mail 関数は、メールが送信処理として正常にサーバーに渡された場合に true を返し、失敗した場合に false を返します。ただしメールの到達を保証するものではなく、SMTPサーバーの設定や迷惑メール判定により届かないこともある点に注意が必要です。

使用例

基本的な使い方

<?php
$to = 'example@example.com';
$subject = 'テストメール';
$message = 'これはPHPのmail関数によるテストメールです。';
$mail_sent = mail($to, $subject, $message);

if ($mail_sent) {
    echo 'メールを送信しました。';
} else {
    echo 'メール送信に失敗しました。';
}
?>

最もシンプルなメール送信例です。送信先、件名、本文だけを指定しています。

ヘッダーを追加する例(送信元と文字コード指定)

<?php
$to = 'user@example.com';
$subject = 'お問い合わせありがとうございます';
$message = "お問い合わせ内容を承りました。n担当者より追ってご連絡いたします。";

$headers = "From: webmaster@example.comrn";
$headers .= "Content-Type: text/plain; charset=UTF-8rn";

$mail_sent = mail($to, $subject, $message, $headers);

if ($mail_sent) {
    echo '自動返信メールを送信しました。';
} else {
    echo 'メール送信に失敗しました。';
}
?>

送信元メールアドレスと文字コードを指定し、本文がUTF-8であることを明示しています。

HTMLメールを送信する例

<?php
$to = 'recipient@example.com';
$subject = 'HTMLメールのサンプル';

$message = '<html><body><h1>こんにちは!</h1><p>これは<strong>HTMLメール</strong>の例です。</p></body></html>';

$headers  = "MIME-Version: 1.0rn";
$headers .= "Content-type: text/html; charset=UTF-8rn";
$headers .= "From: sender@example.comrn";

$mail_sent = mail($to, $subject, $message, $headers);

if ($mail_sent) {
    echo 'HTMLメールを送信しました。';
} else {
    echo 'メール送信に失敗しました。';
}
?>

HTML形式のメールを送信する場合、Content-Typeヘッダーで text/html を指定し、HTMLタグを含んだ本文を送ります。

関連する関数

  • mb_send_mail:マルチバイト文字のエンコーディングを自動で行い、日本語メールを送る際に便利です。
  • filter_var:メールアドレスの形式チェックに使えます。
  • PHPMailer(外部ライブラリ):SMTP認証を使った高度なメール送信に利用されます。

まとめ

PHPの mail 関数は、シンプルにメールを送信したいときに便利な関数です。送信元や文字コード、HTMLメール対応などヘッダーの設定を適切に行うことで、実務でも問題なく利用できます。ただし、迷惑メール判定やサーバーの設定によっては送信失敗や未着になることもあるため、より信頼性の高いメール送信が必要な場合は mb_send_mail 関数やPHPMailerの利用も検討しましょう。