PHPを使用して電子メールを送信する方法は、非常に一般的であり、シンプルなWebアプリケーションでもよく使われています。この記事では、PHPを使って電子メールを送信するための基本的な方法、そしてそのために必要な設定や関数について、完全かつ包括的に説明します。これにより、誰でも簡単にPHPを使用してメールを送信できるようになることを目指します。
1. PHPのmail()
関数を使用する
PHPには標準でmail()
という関数があり、これを使うことで非常に簡単にメールを送信できます。基本的な構文は以下のようになります。

php
$to = 'recipient@example.com'; // 送信先のメールアドレス
$subject = 'メールの件名'; // メールの件名
$message = 'メールの本文'; // メールの本文
$headers = 'From: sender@example.com' . "\r\n" . // 送信元のメールアドレス
'Reply-To: sender@example.com' . "\r\n" . // 返信先のメールアドレス
'X-Mailer: PHP/' . phpversion(); // メールの送信者を明記
mail($to, $subject, $message, $headers);
?>
使い方の解説
$to
: メールを送信する相手のメールアドレス。$subject
: メールの件名。$message
: メールの本文。$headers
: 追加のヘッダー情報(送信元、返信先など)。
上記のコードをPHPで実行すると、指定したメールアドレスにメールが送信されます。
2. メール送信に必要な設定
PHPのmail()
関数が動作するためには、サーバー側でメール送信をサポートしている必要があります。一般的に、PHPはサーバーのメール送信機能(例えば、SendmailやPostfix)を利用してメールを送信します。
もしローカル環境でテストしている場合やメール送信がうまくいかない場合、サーバーに設定が必要です。また、PHPのphp.ini
ファイルでsendmail_path
やSMTP
設定が適切に設定されていることを確認してください。
3. SMTPサーバーを使用したメール送信
PHPのmail()
関数は、ローカルのメールサーバーを使用しますが、外部のSMTPサーバーを利用することで、送信者の信頼性を高めたり、メール送信のトラブルを回避したりできます。SMTPを使用するためには、PHPのPHPMailer
などのライブラリを使用するのが一般的です。
PHPMailerを使ったSMTPによるメール送信
- PHPMailerのインストール
まず、PHPMailerライブラリをインストールします。Composerを使ってインストールするのが簡単です。
bashcomposer require phpmailer/phpmailer
- PHPMailerを使ってSMTP経由でメールを送信
次に、PHPMailerを使ってSMTPサーバーを経由してメールを送信するコードを見てみましょう。
php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Composerのオートローダーを読み込む
require 'vendor/autoload.php';
$mail = new PHPMailer(true);
try {
// サーバー設定
$mail->isSMTP();
$mail->Host = 'smtp.example.com'; // 使用するSMTPサーバー(例: Gmailならsmtp.gmail.com)
$mail->SMTPAuth = true;
$mail->Username = 'your-email@example.com'; // SMTPサーバーのユーザー名
$mail->Password = 'your-email-password'; // SMTPサーバーのパスワード
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// 送信元設定
$mail->setFrom('from@example.com', 'Mailer');
$mail->addAddress('recipient@example.com', 'Joe User'); // 送信先のメールアドレスと名前
// コンテンツ設定
$mail->isHTML(true);
$mail->Subject = 'メールの件名';
$mail->Body = 'ここにメールの本文を書きます。';
// メール送信
$mail->send();
echo 'メールは正常に送信されました。';
} catch (Exception $e) {
echo "メールの送信に失敗しました: {$mail->ErrorInfo}";
}
?>
使い方の解説
$mail->Host
: 使用するSMTPサーバーのホスト名。例えば、Gmailの場合はsmtp.gmail.com
です。$mail->Username
および$mail->Password
: SMTPサーバーにログインするための認証情報です。$mail->SMTPSecure
: 使用するセキュリティの設定(TLSやSSL)です。$mail->Port
: SMTPサーバーが使用するポート番号。一般的には587
(STARTTLS)か465
(SSL)が使われます。$mail->setFrom
: 送信元のメールアドレスと名前。$mail->addAddress
: 送信先のメールアドレスと名前。
PHPMailerは、エラーが発生した場合に詳細なエラーメッセージを表示してくれるため、トラブルシューティングが容易になります。
4. HTMLメールの送信
PHPでHTMLメールを送信することも簡単です。上記のPHPMailer
のコード例でも、$mail->isHTML(true);
を使って、メールをHTML形式で送信しています。これにより、リッチテキストや画像、リンクを含むメールを送信することができます。
php$mail->Body = 'こんにちは
これはHTML形式のメールです。
';
$mail->AltBody = 'これはテキスト形式のメールです。'; // HTMLメールが表示できない環境向け
5. 添付ファイルの送信
PHPMailerでは、メールにファイルを添付することもできます。添付ファイルを追加するには、addAttachment()
メソッドを使用します。
php$mail->addAttachment('/path/to/file.pdf'); // 添付ファイルのパス
複数のファイルを添付する場合は、同様にaddAttachment()
を繰り返し呼び出すことができます。
6. メール送信の成功と失敗
メールが正常に送信されると、send()
メソッドはtrue
を返します。送信に失敗した場合、PHPMailerは例外をスローします。エラーメッセージを表示することで、問題を特定できます。
phptry {
$mail->send();
echo 'メールは正常に送信されました。';
} catch (Exception $e) {
echo "メールの送信に失敗しました: {$mail->ErrorInfo}";
}
7. メール送信に関する注意点
- 迷惑メールとして判定されないように、正しい
From
ヘッダーやReply-To
ヘッダ