PHPでメール送信時に返信先(Reply-To)を指定する方法
PHPにてメールを送信し、そのメールに対して返信しようとすると通常は送信元のメールアドレスに対して返信しようとする筈。この返信先をPHP側で指定したい。調べたところ「Reply-To」というメールヘッダーを指定すれば良いみたい。バニラPHPとPHPMailerでの対応方法をメモ。
背景・やりたいこと
フォームからお問い合わせなどを行った場合、ユーザ・クライアント共に自動送信用メールアドレスからメールを受信するというケースが多い。
ユーザに対しては大抵「このアドレスは自動送信用のため返信できません」的な案内をする。
ただ、クライアント側は届いたメールに対して返信したい筈なんだけど、そのまま返信しようとすると自動送信用メールアドレスが宛先になる筈。この返信先をユーザ宛てに指定したい。
対応方法
バニラPHPの場合
送受信用のメールアドレス及び名前部分は適宜変更すること。
mb_language('ja');
mb_internal_encoding('UTF-8');
$to = 'to@test.com';
$to_name = '受信者名';
$from = 'from@test.com';
$from_name = '送信者名';
$header_option = [
'MIME-Version' => '1.0',
'Content-Transfer-Encoding' => '7bit',
'Content-Type' => 'text/plain; charset=UTF-8',
'Return-Path' => $from,
'From' => $from_name . ' <' . $from . '>',
'Sender' => $from_name . ' <' . $from . '>',
'Reply-To' => $to,
'Organization' => 'OrganizationName',
'X-Sender' => $from,
'X-Mailer' => 'Postfix/2.10.1',
'X-Priority' => '3',
];
array_walk( $header_option, function( $_val, $_key ) use ( &$header ) {
$header .= sprintf( "%s: %s \r\n", trim( $_key ), trim( $_val ) );
});
if( mb_send_mail($to, 'subject', 'body', $header) ){
//成功時処理
}else{
//失敗時処理
}
PHPMailerの場合
送受信用のメールアドレス及び名前部分は適宜変更すること。
mb_language('ja');
mb_internal_encoding('UTF-8');
$subject = 'subject';
$body = 'body';
$to = 'to@test.com';
$to_name = '受信者名';
$from = 'from@test.com';
$from_name = '送信者名';
$mail = new PHPMailer\PHPMailer\PHPMailer();
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
$mail->SMTPSecure = 'tls';
$mail->setFrom($from, $from_name);
$mail->AddReplyTo($to, $to_name);
$to = explode(',', $to);
for( $i = 0; $i < count($to); $i++){
$mail->addAddress($to[$i]);
}
$mail->Sender = $from;
$mail->Subject = $subject;
$mail->Body = $message;
if( $mail->Send() ){
//成功時処理
}else{
//失敗時処理
}
参考サイト
関連記事
-
-
SendGridを使ってメールサーバを構築せずにPHPからメールを送信する方法
メールサーバを構築せずに独自ドメインのメールアドレスにてメール送信を行いたい。過 ...
-
-
PHPMailerでエンベロープFrom(Return-Path)を指定する方法
同じメールアドレスから送信したメールがmb_send_mail関数だと受信できる ...
-
-
PHPMailerでメールを送信する際にTLS / SSL暗号化させる方法
PHPMailerでメールを送信したところGmailで確認すると赤い鍵のようなア ...
-
-
【2024年版】PHPMailerでGmailのSMTPサーバを経由してメールを送信する方法
だいぶ前に同じようなことをメモしたが、そちらの方法だと送信できずエラー内容を見た ...
-
-
PHPでファイルを添付してメールを送信する方法(PHPMailer)
PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...