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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

4回答

5803閲覧

PHPでお問い合わせフォームを作ったのですが、メールが送られてきません。

ShunYoshizawa

総合スコア103

PHP

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

3クリップ

投稿2016/04/19 03:53

編集2016/04/19 05:32

htmlとcssでお問い合わせフォームデザインを作り、
「送信」ボタンを押すと指定されたアドレスにメールが届くようにphpでコーディングしました。

しかし、、
「送信」してもメールが届きません。

原因がわかる方いらっしゃいますでしょうか?
インターネットで検索してもよくわかりません。

MAMPを使ってフォーム送信すると、
しっかりと「メール送信成功しました。」を返してくれます。

宜しくお願い致します。

html

1<div class="form-content"> 2 <form action="send.php" method="post"> 3 <div class="form-group"> 4 <label for="name">名前<span class="required">必須</span></label> 5 <input name="name" type="text" placeholder="佐藤太郎" class="radius"> 6 </div> 7 <div class="form-group"> 8 <label for="age">年齢<span class="required">必須</span></label> 9 <select name="age" class="radius pull-down"> 10 <option value="">年齢を選んでください。</option> 11 <option value="18歳未満">18歳未満</option> 12 <option value="18歳">18歳</option> 13 <option value="19歳">19歳</option> 14 <option value="20歳">20歳</option> 15 <option value="21歳">21歳</option> 16 <option value="22歳">22歳</option> 17 <option value="23歳以上">23歳以上</option> 18 </select> 19 </div> 20 <div class="form-group"> 21 <label for="email">メールアドレス<span class="required">必須</span></label> 22 <input name="email" type="email" placeholder=abcdef@ghi.com" multiple="multiple" class="radius"> 23 </div> 24 <div class="form-group"> 25 <label for="day">体験会参加日程<span class="required">必須</span></label> 26 <select name="day" class="radius pull-down"> 27 <option value="">日程を選んでください。</option> 28 <option value="6/1">6月1日</option> 29 <option value="6/8">6月8日</option> 30 <option value="6/15">6月15日</option> 31 <option value="6/22">6月22日</option> 32 <option value="6/29">6月29日</option> 33 <option value="7/6">7月6日</option> 34 <option value="7/13">7月13日</option> 35 <option value="7/20">7月20日</option> 36 <option value="7/27">7月27日</option> 37 </select> 38 </div> 39 <div class="form-group"> 40 <label for="comment" class="last-form">その他<span class="any">任意</span></label> 41 <textarea name="comment" placeholder="ご自由にお書きください。" cols="50" rows="5" class="radius"></textarea> 42 </div> 43 <div class="submit-area"> 44 <input type="submit" name="submit" value="送信" class="submit-btn"></input> 45 </div> 46 </form> 47 </div>

php

1<?php 2header('Content-Type: text/html; charset=UTF-8'); 3header('Content_Language: ja'); 4$to = '○○@○○'; //送信先メールアドレス 5$subj = 'お問い合わせ'; //件名 6$mess = '名前: ' . $_POST["name"] ."\r\n".'年齢: ' .$_POST["age"] ."\r\n".'メールアドレス: ' .$_POST["email"] ."\r\n".'参加日程: '. $_POST["day"]."\r\n".'その他(任意): '. $_POST["comment"]; 7$from = 'From: '.$_POST["email"] ; //送信元メールアドレス 8mb_language('japanese'); 9mb_internal_encoding('UTF-8'); 10if(mb_send_mail($to,$subj,$mess,$from)){ 11 echo "メール送信成功しました。"; 12}else{ 13 echo "メール送信失敗しました。"; 14} 15?>

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

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

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

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

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

mhashi

2016/04/19 03:56

mb_send_mailの結果や、echoされた文字列はどうなってるんでしょうか。
ShunYoshizawa

2016/04/19 05:30

ご質問ありがとうございます。 echoされた文字列は送信が完了すると新しいページに文字のみ反映されます!
ItoTomonori

2016/04/19 05:40

mhashiさんが、おっしゃられているのは、 echo mb_send_mail(ほげほげ); としてみたときの、出力は?どうなってますか?というご質問です。戻り値に、エラーが原因が書かれている可能性があります。という事です。
ShunYoshizawa

2016/04/19 05:45

echo "メール送信成功しました。"; の部分を echo mb_send_mail($to,$subj,$mess,$from); としてみたところ、、、 「1」が返ってきました。 これはどういったことなのでしょうか? 何度も申し訳ありません。
ItoTomonori

2016/04/19 11:32

戻りが「1」ということは、PHP的には送信できた(成功したつもり)になっています。しかし、実際には届いていないとの事ですので、サーバ側の設定が何らか必要な状態と思われます。 さて、他の書き込みでMacを使っているとの記載を見かけました。その記載より、ご自身のパソコンで試されていると想定すると、インターネットも(おそらく)通常のプロバイダ契約での接続かと思いますので、 SMTP(PORT:25)での送信(localhost:25経由でリレー)は不可能かと思います(OP25Bのため)ので、やはり外部SMTP(587とか465向け)を検討されたほうが(PHPMailerなど)、よいかと思います。
guest

回答4

0

mb_send_mailを使うには、サーバ側(PHPの動作している)の、php.iniの設定や、SendMailなどのSMTPの設定に基本何らかの設定が必要になる場合が多いです。

具体的に、どんな設定が・・・となると、環境などで変わってきますので、一概には、、、

ざっと言えば、サーバ側でSMTP送信できる仕組みがある場合と、外部SMTPを利用する場合に、わけられ、
それぞれ、SMTPサーバ名や、(外部SMTPの場合には)アカウント設定、(内部SMTPの場合には)SMTP側のリレー設定などなど、以外と、設定は多岐にわたります。

私などは、最近はサーバ側の設定が面倒なので、というよりは、さまざまな環境があるため、できるだけphp.iniに依存したくないので、そして外部SMTPを使うシーンも多いので、

PHPMailer

を利用する機会が多いです。
こちらだと、サーバ側の設定に依存せず、メール送信が可能です。
プログラムの書き方などは、サンプルがいろいろありますので、いろいろ試してみてください。
もちろん、ネットの情報だと、うまく送信できないサンプルがいっぱいですので、あきらめずに、いろいろ試してみるのがよいかと。

投稿2016/04/19 04:09

編集2016/04/19 04:10
ItoTomonori

総合スコア1283

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

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

ShunYoshizawa

2016/04/19 05:33

設定がしっかりとなっていないんでしょうか。。。 いろいろ試してみます!! また、PHPMailer調べてみます! ありがとうございます!!!
guest

0

メールの宛先はキャリアメールでしょうか?
キャリアメールの受信拒否設定で受信できていない可能性もあります。Gメールなどのアドレスを試してみてください。

また、利用している環境でsendmailは使えるでしょうか。sendmailコマンドを直接叩いてメールが送れるか試してください。

あとmb_send_mail()ではなく、mail()で送れるか試してみてください。

メール絡みはいろいろ切り分けて調べていく必要があります

投稿2016/04/19 04:19

redara

総合スコア344

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

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

ShunYoshizawa

2016/04/19 05:25

回答ありがとうございます。 mail()でもできませんでした。。。 sendmailコマンドとは何でしょうか? 無知で申し訳ありません。
redara

2016/04/19 06:32 編集

コマンドラインから sendmail 宛先メールアドレス<Enter> Subject:test<Enter> <Enter> honbunhogehoge<Enter> .(ピリオド)<Enter> とか入力してみます。
redara

2016/04/19 06:35

あとメールの設定で、 Fromのアドレスのドメインが、ホストに設定しているドメインと一致していないとエラーになるような設定をしてるとかも考えられるので、Fromのアドレスも確認してみてください。
redara

2016/04/19 06:46

あと、環境は共有レンタルサーバーかVPSかクラウドか自前のサーバーマシンか自分のデスクトップ環境か、OSはWindowsかMacかLinuxかなどを 教えておいてもらえるとよりアドバイスしやすいかと思います
ShunYoshizawa

2016/04/19 06:58

回答ありがとうございます!! 環境はMAMPを使っていて、OSはMacです!
guest

0

ベストアンサー

投稿2016/04/23 05:35

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ワードプレスを使いましょう! プラグイン探してインストールし有効化。

ショートコード一発でお問い合わせフォームが使えます!!

投稿2016/04/21 16:29

KatsukiSugiura

総合スコア335

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

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

KatsukiSugiura

2016/04/21 16:39

レンタルサーバーならサーバーサイドの設定と指定した処理が合ってないだけなので、自分で調べるしかないですよね…。 テスト環境で動作して、本番環境で動かなければ環境設定を合わせれば解決。 そーゆうの面倒…ならCMS利良する方が良いです。
退会済みユーザー

退会済みユーザー

2016/04/23 05:43

誤った誘導をしないで下さい。cmsいれてもその他の設定ができてないとメールは送れないし、ここで回答されている内容は、cmsを利用している時にも必要な情報です。 あと、メール等のプラグイン、いざというとき中身読めないと余計にどはまりしますよ。。。
KatsukiSugiura

2016/04/23 06:43

人 金 モノ と言うように、いざと言う時に頼りになるエンジニアを雇うのも大事ですね! カスタマイズしなければいざという時はないはずなんですけどね。
退会済みユーザー

退会済みユーザー

2016/04/23 08:41

私のコメントへの回答なんですかね?かみ合っていないようですが。 今回のコメントも誤った誘導をされているので、追記します。 カスタマイズしなければ、いざという時がこないなんてありえません。 当然ですが、cms本体にもプラグインにも不具合や脆弱性はありますし、それを利用される場面もあります。特にメール関係は他人にも迷惑をかける可能性が高い箇所なので、十分注意の必要な箇所です。 サイトを運営するにおいて、想定していなければならない範囲の話です。
KatsukiSugiura

2016/04/23 08:58

使えるか確認した上で利用する分にはシステム上万が一は有りません。 アップデートしなければ良いだけです。 サーバーの設定と各種通信方式の設定、それに対するアプリの設定が合わせるのが面倒ならCMS使った方が利便性良いですよと言う意味合いです。 更に、若いうちに起業しておいた方が楽しめるんじゃないでしょうか?と言っています。
KatsukiSugiura

2016/04/23 09:14

下手したら3分で世に出せますし。
退会済みユーザー

退会済みユーザー

2016/04/23 09:27

先のコメントにも書きましたが、どのようなcmsも脆弱性や不具合は含まれていると想定して使用すべきです。アップデートしなければ、その分既知の脆弱性がたまるので、外部からの攻撃され、意図した以外の動作をする可能性が高まります。 一時的に使えることと、継続的に使えることは全く違うことです。 OSSを利用する上で、アップデートを推奨しないとかありえないですよ。。。 本論とはズレてしまい、質問者の方には大変申し訳無いのですが、誤って理解される方がいると迷惑ですので、コメントしました。 評価も下がったようなので、これ以上はコメントしないようにします。
KatsukiSugiura

2016/04/23 11:33

本論はただ設定が合ってないだけですよ。 面倒だから聞いてるだけでは? 無料だし。
KatsukiSugiura

2016/04/23 11:44

有り得る事は攻撃側も想定済みと言う考え方も有ります。 まずI基本的に自社のサービスを必要とさせる為に攻撃者を用意するケースが多いです。 パーマネントに技術を向上しなければならないとか…。 国もそうですよね。 一つのマーケティング方法です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問