メール送信トラブル!PHPでのメッセージ配信がうまくいかない時の対処法

2023年6月9日

解決方法

特定のメールアドレスにメールが届かないトラブルに直面した場合、以下の解決方法があります。

Return-Pathの設定を確認する

メールが正しく届かない場合、Return-Pathが設定されていない可能性があります。Return-Pathは受信拒否される原因となるため、適切に設定する必要があります。

mail関数を使用する場合の対処法

mail関数を使用してメールを送信する場合は、以下の形式になります。

mail(宛先,件名,メッセージ,ヘッダ)

mb_send_mail関数を使用する場合

マルチバイトに対応し、日本語での送信も可能なmb_send_mail関数を使用する場合は、以下のポイントに注意します

そのポイントは、-f オプション エンベローブ フロム アドレス設定オプション 入れるとよいです。

$returnMail = '送信元のメールアドレス'

//登録完了のメールを送信
//メールの宛先
$mailTo = $mail;

//Return-Pathに指定するメールアドレス
$returnMail = 'XXXXXXX@gmail.com';
$name = "〇▼◆会社";
$mail = 'XXXXXX@gmail.com';
$subject = "ご注文内容に関してのお知らせ";

$body = <<< EOM
$kaisha
$busyo
$tantou 様

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

//Fromヘッダーを作成
$header = 'From: ' . mb_encode_mimeheader($name). ' <' . $mail. '>';
$header .="\r\n";
$header .= 'Return-Path: ' . mb_encode_mimeheader($name). ' <' . $mail. '>';
$header .="\r\n";
$header .= "Bcc: xxxxxx@gmail.com";

if (mb_send_mail($mailTo, $subject, $body, $header, '-f'. $returnMail))
{
	//セッション変数を全て解除
	$_SESSION = array();

	//クッキーの削除
	if (isset($_COOKIE["PHPSESSID"]))
	 {
		setcookie("PHPSESSID", '', time() - 1800, '/');
	 }
	//セッションを破棄する
	session_destroy();

	$message = "メールをお送りしました。ご確認ください。";

 } else
 {
		$errors['mail_error'] = "メールの送信に失敗しました。";
 }