質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2893閲覧

PHPで構築したお問い合わせフォームが迷惑メール扱いになってしまう

Keisuke1130

総合スコア5

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/02/13 10:36

編集2020/02/17 03:03

いつもお世話になっております。
表題のとおり、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?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2020/02/13 11:06

ソースコードは提示された方がいいかと。 headerの設定とかもからんでくると思うので。
Keisuke1130

2020/02/14 00:55

ご回答有難う御座います。ソースを追記させていただきました。
退会済みユーザー

退会済みユーザー

2020/02/14 18:13

ドメインのDNS設定がどうなっているか。特にMXレコードまわり
Keisuke1130

2020/02/17 05:04

ドメインのDNS設定を追加させていただきました。
Keisuke1130

2020/02/17 10:08

実は、私が配属される以前にこちらの移行対応が終わっており、また、当時の対応状況やそのドキュメント等も御座いません 私の知識不足等もあり、仰っている件をまとめることが出来ません。せっかくのご提案なのに申し訳御座いません。 ですので、今の状態でもう少々回答募集を続けさせていただきます。少し待って回答が来ないようでしたら閉じさせていただきます。
guest

回答2

0

「フォームメール メールが迷惑メールになってしまう」でググる。
紹介されている対策方法を試す。
以上。

投稿2020/02/13 10:44

編集2020/02/13 10:44
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

送信メールに何を使っているか次第ですね
サーバー自体から送るメールはおそらく全般的にスパム扱いになります
任意のメールサーバー経由でcurlなどで送ってください

投稿2020/02/13 10:45

yambejp

総合スコア116730

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問