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{ //失敗時処理 }
参考サイト
関連記事
-
PHPMailerでエンベロープFrom(Return-Path)を指定する方法
同じメールアドレスから送信したメールがmb_send_mail関数だと受信できる ...
-
PHPでファイルを添付してメールを送信する方法(PHPMailer)
PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...
-
PHPMailerを使ってメールをSMTP送信する方法(Composer無し)
PHPでメールをSMTP送信したかった。また、レンタルサーバだったのでCompo ...
-
Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法
開発環境等メールサーバが無い環境でメール送信テストを行う際にMailtrapとい ...
-
PHPでHTMLメールを送信する方法(PHPMailerあり無しの2パターン)
PHPでHTMLメールを送信したい。また、メール関連の機能を実装する際は環境によ ...