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{
//失敗時処理
}
参考サイト
関連記事
-
-
Mailtrap & PHPMailerでメールサーバ無しの環境でもメール送信テストを行う方法
開発環境等メールサーバが無い環境でメール送信テストを行う際にMailtrapとい ...
-
-
PHPMailerでメールを送信する際にTLS / SSL暗号化させる方法
PHPMailerでメールを送信したところGmailで確認すると赤い鍵のようなア ...
-
-
メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信
メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合 ...
-
-
PHPでファイルを添付してメールを送信する方法(PHPMailer)
PHPでファイルを添付の上、メールを送信したかった。方法を探したところphpma ...
-
-
PHPMailerを使ってメールをSMTP送信する方法(Composer無し)
PHPでメールをSMTP送信したかった。また、レンタルサーバだったのでCompo ...