PHPを使用して電子メールを送信する方法は、非常に一般的であり、シンプルなWebアプリケーションでもよく使われています。この記事では、PHPを使って電子メールを送信するための基本的な方法、そしてそのために必要な設定や関数について、完全かつ包括的に説明します。これにより、誰でも簡単にPHPを使用してメールを送信できるようになることを目指します。
1. PHPのmail()関数を使用する
PHPには標準でmail()という関数があり、これを使うことで非常に簡単にメールを送信できます。基本的な構文は以下のようになります。
php
$to = '[email protected]'; // 送信先のメールアドレス
$subject = 'メールの件名'; // メールの件名
$message = 'メールの本文'; // メールの本文
$headers = 'From: [email protected]' . "\r\n" . // 送信元のメールアドレス
'Reply-To: [email protected]' . "\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 = '[email protected]'; // SMTPサーバーのユーザー名
$mail->Password = 'your-email-password'; // SMTPサーバーのパスワード
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
// 送信元設定
$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]', '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ヘッダ

