関数の概要
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の利用も検討しましょう。
