いつもお世話になっております。
表題のとおり、PHPで構築したフォームからデータを送信すると、
送信者が受信する自動返信メールが迷惑メールになってしまっており、困っております。
■確認現象
PHPで構築したフォームからデータを送信すると、自動返信メールが返ってくる仕組みですが、
その自動返信メールが、Gmailでは「このメールは暗号化されませんでした」と表示され、hotmailでは迷惑メールフォルダに入ってしまいます。
■現象発生タイミング
以前まではファイル設置先ドメインと、自動返信メールの送信元アドレスになるアドレスのドメインを
さくらのレンタルサーバーで契約しておりました。
それまでは上記のような現象は発生しておりませんでした。
しかし、数年前にファイル設置先ドメインをカゴヤジャパンに切り替えました。
※この段階でファイル設置先ドメインと、メールのドメインが別々になります。
その後、フォームからの自動返信メールが迷惑メールになるという現象を確認し、調査したところ、
上記のドメイン移管前後で発生していることがわかりました。
■推測・お聞きしたいこと
おそらくですが、今までファイル設置先ドメインとメールドメインを同じ会社で契約していたので、
受信側が迷惑メールとして判断していなかったのだと推測しています。
自動返信メールを確認すると、上記のタイミング前後で
・移管前の送信元は「www2444.sakura.ne.jp」
・移管後の送信元は「kagoya.net」
となっていたため、そう推測しました。
お聞きしたこととしては、
1.上記のように「送信元」を一致させれば迷惑メール扱いにならずにすむのか、
2.また、その方法等
3.見当違いである場合、主にどういった部分が考えられるか
※自身でも調査しましたが、ソースを読み解く力がなく、唯一、さくらサーバでSPFレコードの設定はされていることはわかりました。
よろしくお願いいたします。
//0217追記
各ドメインのDNSレコード設定を追記いたします。
・ファイルサーバのドメイン(カゴヤサーバ)
DNSレコードの設定:特にされていないようです。カゴヤ側の設定の「DNS設定」を確認しましたが、「DNSレコード設定は設定されていません。」という表示になります。
・メールサーバのドメイン(さくらサーバ)
@/NS/ns1.dns.ne.jp.
@/NS/ns1.dns.ne.jp.
@/A/210.224.185.54
@/MX/10 @
@/AAAA/2403:3a00:201:18:210:224:185:54
@/TXT/"v=spf1 a:www2444.sakura.ne.jp mx ~all"
www/CNAME/@
mail/CNAME/@
ftp/CNAME/@
///0214追記
ソースを追記いたします。
下記はメールを送信するphpで、フォームのプログラムをまとめているphp内に書かれている記述の一部です。
mail_to_adminは管理者用、mail_to_clientはユーザーへの自動返信用です。
class「Mail」をフォームの送信完了phpで宣言、
その後、同じくフォームの送信完了php内で、mail_to_adminとmail_to_clientの二つのメソッドにアクセスしています。
php
1<? 2class Mail extends Field{ 3 public function __construct(){ 4 parent::__construct(); 5 } 6 7 private function h($string): string{ 8 return htmlspecialchars($string, ENT_QUOTES, 'UTF-8'); 9 } 10 11 //mailヘッダー 12 private function mail_head($from){ 13 $headers = ''; 14 $headers = "MIME-Version: 1.0\n"; 15 $headers .= "From: <$from>\n"; 16 return $headers; 17 } 18 19 //管理者用mail 20 public function mail_to_admin(): void{ 21 //初期設定 22 $encode = "UTF-8"; 23 $host = gethostname() ?? '取得できませんでした。'; 24 $ip = $this->h($_SERVER['REMOTE_ADDR']) ?? '取得できませんでした。'; 25 $ref = $this->h($_POST['ref']) ?? null; 26 $id = $this->h($_COOKIE['Key']) ?? null; 27 28 //送信先 29 $to = 'admin@address.jp'; 30 31 //ヘッダ 32 $hd = ''; 33 if(isset($_POST['mail'])){ 34 $hd = $this->mail_head($_POST['mail']); 35 }else { 36 $hd = $this->mail_head('mail@mailserver.jp'); 37 } 38 $hd .= "Reply-To: mail@mailserver.jp\n"; 39 $hd .= "Content-Type:text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); 40 41 //題名 42 $title = $this->h($_POST['mtitle']); 43 44 //本文 45 $text = $this->make_context(); 46 $text .= PHP_EOL.'送信された日時:'.date('Y年m月d日 H時i分s秒').PHP_EOL; 47 $text .= '送信者のIPアドレス:'.$ip.PHP_EOL; 48 $text .= '送信者のホスト名:'.$host.PHP_EOL; 49 $text .= 'ユニークID:'.$id.PHP_EOL; 50 $text .= '問い合わせのページURL:'.$ref; 51 $text = mb_convert_encoding($text,"JIS",$encode); 52 53 //メール送信(送信先, 題名, 本文, ヘッダ) 54 mail($to, $title, $text, $hd); 55 } 56 57 //ユーザー用mail 58 public function mail_to_client(): void{ 59 //初期設定 60 $encode = "UTF-8"; 61 62 //送信先 63 $to = $_POST['mail'] ?? null; 64 if(!$to) die; 65 66 //題名 67 $mtitle = $this->h($_POST['mtitle']); 68 $title = "=?iso-2022-jp?B?".base64_encode(mb_convert_encoding($mtitle,"JIS",$encode))."?="; 69 70 //本文 71 $text = $this->make_context(); 72 $text .= "\n送信日時:".date( "Y/m/d (D) H:i:s", time() )."\n"; 73 $text = mb_convert_encoding($text,"JIS",$encode); 74 75 //ヘッダ 76 $from = 'mail@mailserver.jp'; 77 $hd = "From: ".$from; 78 $hd .= "\nReply-To: ".$from; 79 $hd .= "\nContent-Type: text/plain;charset=iso-2022-jp\nX-Mailer: PHP/".phpversion(); 80 81 //メール送信(送信先, 題名, 本文, ヘッダ) 82 mail($to, $title, $text, $hd); 83 } 84} 85?>
回答2件
あなたの回答
tips
プレビュー