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

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

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

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

Q&A

解決済

4回答

1549閲覧

【WordPress】自作問い合わせフォーム/メールが送受信されない

lalalady

総合スコア1

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

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

0グッド

0クリップ

投稿2020/08/18 07:27

編集2020/08/18 08:20

前提・実現したいこと

問い合わせしてくれた人(ユーザー)へサンクスメールの送信、管理者へは入力された情報をメールで受信したい。

発生している問題・エラーメッセージ

htmlでの構築段階では特に問題なく送受信ができていたのですが、WordPressに移行後完了ページに遷移してもメールが届かなくなってしまいました。
サーバーは担当者がAWSを一から構築して使用しおります。

入力フォーム画面・送信内容確認画面・完了画面は全て固定ページにしており、画面遷移はうまく行っています。

コードに記述ミスがあるのか、サーバー側で何か設定しないといけないのか...何が原因なのか分かりません。
php初心者、サーバー知識はあまりないですが宜しくお願い致します。

該当のソースコード

php

1【送信完了画面 2:mail.php】 3<?php header("Content-Type:text/html;charset=utf-8"); ?> 4 5<?php 6$action = $_POST['action']; 7$firstname = htmlspecialchars($_POST['firstname']); 8$lastname = htmlspecialchars($_POST['lastname']); 9$first_f_name = htmlspecialchars($_POST['first_f_name']); 10$last_f_name = htmlspecialchars($_POST['last_f_name']); 11$company = htmlspecialchars($_POST['company']); 12$sex = htmlspecialchars($_POST['sex']); 13$age = htmlspecialchars($_POST['age']); 14$type = htmlspecialchars($_POST['type']); 15$send = htmlspecialchars($_POST['send']); 16$zip11 = htmlspecialchars($_POST['zip11']); 17$addr11 = htmlspecialchars($_POST['addr11']); 18$address = htmlspecialchars($_POST['address']); 19$tel = htmlspecialchars($_POST['tel']); 20$email = htmlspecialchars($_POST['email']); 21$comment = htmlspecialchars($_POST['comment']); 22$privacy_check = htmlspecialchars($_POST['privacy_check']); 23 24/* 管理者用 */ 25$to = 'test@test.co.jp'; 26$subject = '資料請求'; 27$message .= '◆https://sample.com/'."\n\n"; 28$message .= '[お名前]'."\n".$firstname .$lastname."\n\n"; 29$message .= '[フリガナ]'."\n".$first_f_name .$last_f_name."\n\n"; 30$message .= '[勤務先]'."\n".$company."\n\n"; 31$message .= '[性別]'."\n".$sex."\n\n"; 32$message .= '[年齢]'."\n".$age."歳"."\n\n"; 33$message .= '[資料の受取方法]'."\n".$type."\n\n"; 34$message .= '[希望の送付先]'."\n".$send."\n\n"; 35$message .= '[住所]'."\n"."〒".$zip11."\n".$addr11.$address."\n\n"; 36$message .= '[電話番号]'."\n".$tel."\n\n"; 37$message .= '[メールアドレス]'."\n".$email."\n\n"; 38$message .= '[お問い合わせ内容]'."\n".$comment."\n\n"; 39$header = 'From: '.$email."\r\n"; 40$header .= 'Reply-To: '.$email."\r\n"; 41 42/* 申し込み者用 */ 43$mailto = $email; 44$subject2 = '資料のご請求ありがとうございます。'; 45$message2 .= 46 '※本メールは自動配信です。送信専用の為、ご返信いただいてもお答えできません。ご了承ください。' 47 ."\n".'お問い合わせは本メールに記載の連絡先へご連絡いただきますようお願い申し上げます。' 48 ."\n\n\n".$firstname .$lastname.'様、この度は資料請求ありがとうございます。' 49 ."\n\n".'- ▼ 送 信 内 容 - - - - - - -' 50 ."\n".'[お名前] '.$firstname .$lastname 51 ."\n".'[フリガナ] '.$first_f_name .$last_f_name 52 ."\n".'[勤務先] '.$company 53 ."\n".'[性別] '.$sex 54 ."\n".'[年齢] '.$age."歳" 55 ."\n".'[資料の受取方法] '.$type 56 ."\n".'[住所] '."〒".$zip11."\n".$addr11.$address 57 ."\n".'[電話番号] '.$tel 58 ."\n".'[メールアドレス] '.$email 59 ."\n".'[お問い合わせ内容] '."\n".$comment 60 ."\n\n".'- ▼ 資料のダウンロードはこちら - - - - - - -' 61 ."\n".'ダウンロード用URL記載' 62 ."\n".'- - - - - - - - - - - - - - - - - - - - - - - - -' 63 ."\n\n\n".'郵送をご希望のお客様は、到着までに3日ほどお時間いただきます。ご了承ください。' 64 ."\n\n".'ご不明点等ございましたらお気軽にお問い合わせください。' 65 ."\n\n\n".'https://sample.com/' 66 ."\n".'TEL:00-0000-0000 info@sample.co.jp'; 67 68$header2 = 'From: '.$to."\r\n"; 69 70if($action == "post") 71$status = mb_send_mail($to, $subject, $message,$header); 72if($action == "post") 73$status = mb_send_mail($mailto, $subject2,$message2,$header2); 74?>

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

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

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

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

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

guest

回答4

0

回答ではないです。

これ、公開サーバに置かないでください。
メールが送れるようになると、SPAM の発射台になります。

バリデーションなし、メールヘッダインジェクション可能とか、ひどすぎだと思いますよ。

投稿2020/08/18 08:24

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

lalalady

2020/08/18 08:34

te2ji 様 ご忠告あありがとうございます。 そうなんですね... サーバー担当者の方がセキュリティ詳しいので強化するみたいですが、これではダメでしょうか?
退会済みユーザー

退会済みユーザー

2020/08/18 09:14

> バリデーションなし、メールヘッダインジェクション可能とか、ひどすぎだと思いますよ。
tanat

2020/08/18 10:08

割とすぐにスパマーに発見されて色々大変なことになるケースですね。
guest

0

ベストアンサー

mb_send_mail() を使用されていますが、php.ini の「[mail function]」は、どのように設定されているでしょうか。( PHP マニュアル > 関数リファレンス > メール関連 > メール > インストール/設定 > sendmail_path w参照)

デフォルトのままであれば、 php を実行しているサーバーに Sendmail や postfix 等の SMTP サーバーは、導入されていますか?

導入されている場合、メールのログには、どのようなメッセージが記録されていますか?


また、AWS の場合、公式ヘルプの EC2 インスタンスからポート 25 の制限を削除するにはどうすればよいですか?

Amazon EC2 は、デフォルトですべての EC2 インスタンスのポート 25 のトラフィックを制限していますが、この制限の削除をリクエストできます。

とあるように、最初は、ポート25 での外部へのメール送信が制限されています。

このドキュメントに記載されているような「E メール送信制限解除申請」はされていますか?

投稿2020/08/18 08:01

編集2020/08/18 08:02
CHERRY

総合スコア25171

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

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

lalalady

2020/08/18 08:08

CHERRY 様 回答ありがとうございます。 php.ini の「[mail function]」がなんなのか分かりませんが、設定をした覚えがありません... SMTPはプラグインを入れましたが設定方法が分からず何もしていない状態です... 「E メール送信制限解除申請」担当者に確認してみます。
CHERRY

2020/08/18 08:15 編集

(WordPress の) メールの送信をプラグインをインストールしたと書かれていますが、質問のコードを見た限りでは、 WordPress から実行されていませんので、WordPress のメール送信プラグインは使用されません。 純粋に php のメール送信機能が使われますので、php.ini を設定した覚えがなければ、デフォルトだと思いますので、EC2 サーバーにセットアップされている SMTP サーバーを利用してメールが送信されます。 サーバー管理者に、SMTP サーバーのしらべて、どのようなエラーメッセージが出ているか確認してもらってください。
lalalady

2020/08/18 08:23

そうなんですね、ありがとうございます。 AWSでメールサーバー構築してないそうです。 送受信テスト用として下記のメールアドレスを私のメールアドレスにしています。 $to = 'test@test.co.jp'; ドメインは独自ドメイン、Gsuiteを使用しています。 Gsuite側で何か設定が必要ですか?
CHERRY

2020/08/18 08:42

AWS EC2 で実行されている PHP から Gsuite から送信するのであれば、PHP のメール送信関数ではなく、PHPMailer ( https://github.com/PHPMailer/PHPMailer ) 等を使って、送信する必要があります。 別の回答で指摘されていますが、現状のコードでは、メールが送り放題になると思われるので、悪用された場合に「差出人ドメイン」がブラックリストに掲載されて、悪質なサイトと評価されると思います。 IPA が配布している「安全なウェブサイトの作り方」( https://www.ipa.go.jp/security/vuln/websecurity.html ) 等を読んで、プログラムでも対策を検討してください。
lalalady

2020/08/18 10:48

ありがとうございます! 参考にさせていただきます。
guest

0

サーバーは担当者がAWSを一から構築して使用しおります。

とのことですが、
迷惑メール送信元としてメール受信する側や経路上で認定されていると、
メールが届かなくなることがあります。

送信ドメイン認証(SPF / DKIM / DMARC)の仕組みと、なりすましメール対策への活用法を徹底解説 – エンタープライズIT [COLUMNS]

この解説ページで説明していることを構築した人に確認してもらって、
対策済みであるかどうかをテストしてください。

投稿2020/08/18 07:56

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

lalalady

2020/08/18 08:09

m6u 様 回答ありがとうございます。 担当者に確認してもらいます。
lalalady

2020/08/18 08:19 編集

こちらでメールサーバを構築していない点、現在送信元に設定されているであろう(※会社の)ドメインからのメールが実際に送受信可能である点(現状クライアントからのなりすましの報告がない)、これらを考えて現在規制を受けている可能性は非常に低いと考えます。 との返信が返ってきました。
guest

0

他の方の回答にある通り、かなり致命的な問題が存在するので独自実装はやめた方が良いと思います。

問い合わせフォームをきちんと構築運用するには色々な知見が必要なので
開発そのものが目的で無い限りは
Googleフォームや他の問い合わせフォームサービスを使うことで対応できないかの検討をされることをお勧めします。

自前で持つにしても、WordPressの問い合わせフォームプラグインを使うなどする方がまだ管理しやすいと思います。(WordPressとプラグインが適切に管理されている前提になりますが)

投稿2020/08/18 10:14

編集2020/08/18 10:16
tanat

総合スコア18713

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問