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

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

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

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

3回答

2556閲覧

PHPでのメール送信機能がうまく動かない

culuculu

総合スコア52

PHP

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2016/03/05 15:01

編集2016/03/05 19:18

XAMPPでphpを使ってメールフォームのコードを書いていますが、うまく表示されません。
htmlファイルで作ったメールフォームに情報を打ち込み、phpのファイルにアクセスしようとすると、ブラウザに「送信に失敗しました」とでます。
原因がわかる方はご教授願いたいです。
因みに、ApacheWebサーバはrunningになっています。
コードは以下に載せておきます。
よろしくお願いします。

contact_form.html

1<!DOCTYPE html> 2<html lang = "ja"> 3<meta charset="utf-8"> 4<head> 5<meta charset="utf-8"> 6<title>問い合わせ画面</title> 7</head> 8<body> 9<form action="./contact_form.php" method="post"> 10 <dl> 11 <dt>名前</dt>:<input name="name" type="text" size="30" /><br /> 12 <dt>アドレス</dt>:<input name="email" type="text" size="50" /><br /> 13 <dt>タイトル</dt>:<input name="subject" type="text" size="50" /><br /> 14 <dt>本文</dt>:<textarea name="message" cols="100" rows="10"></textarea><br /> 15 <input type="submit" value="送信する" /> 16</form> 17</body> 18</html> 19

contact_form.php

1<?php 2mb_language("japanese"); 3mb_internal_encoding("UTF-8"); 4if (!empty($_POST['email'])) { 5 $to = $_POST['email']; 6 $subject = $_POST['subject']; 7 $body = $_POST['message']; 8 $from = mb_encode_mimeheader(mb_convert_encoding("てつろう","JIS","UTF-8"))."<tetsuro@gmail.com>"; 9 $success = mb_send_mail($to,$subject,$body,"From:".$from); 10} 11?> 12<!DOCTYPE html> 13<html lang="ja"> 14<head> 15<meta charset="UTF-8"> 16<title>メール送信確認画面</title> 17</head> 18<body> 19<div id="report"> 20<p> 21<?php 22if ($success) { 23 print('送信しました'); 24} else { 25 print('送信に失敗しました'); 26} 27?> 28</p> 29</div> 30</body> 31</html> 32

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

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

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

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

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

guest

回答3

0

ベストアンサー

それはたぶん送れません
http://www.kut-ww.com/php%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%AE%E3%83%A1%E3%83%BC%E3%83%AB%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E4%BD%9C%E6%88%90
にも書いてありますが
※因みにpostfixという電子メールサーバソフトウェアは既にインストールしているものとして説明を進めていきます。
posifxサーバーがないと動きません

でまずやるべきは
http://www.tryphp.net/phpsample-mail-mailsend/
mb_send_mailの確認をします

次に
たぶん質問者さんは自宅サーバーをもっていないので、
Mercury/32でpostfixサーバーを作ってください

投稿2016/03/05 17:52

gik

総合スコア152

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

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

culuculu

2016/03/05 18:21

XAMPPに採用されていると書いてあったのですが、それでもメールサーバを導入しないといけないのでしょうか?
gik

2016/03/06 06:20 編集

申し訳ありませんが http://www.tryphp.net/phpsample-mail-mailsend/ でテスト送信は可能でしょうか? もし送れればそれはソースコードの間違いということになります あとこのテスト送信で完了しましたとメールがとどくか 確認できます。 よろしくお願いします
gik

2016/03/07 01:58

そうなってくると、phpのせっていがおかしいかもです。 私もテストとして、このプログラムつかったのですが、メール無事送信されました。 でも、メールはこなかったですが。 あとプログラムのfromとtoはなにをいれましたか?
culuculu

2016/03/07 05:59

phpの設定はphp.iniのファイルの中身を変えればいいのでしょうか? メールは送る機能だけで構いません。 プログラムのfromとtoには両方とも、自身が使っているPC用のメールアドレスを使いました。
culuculu

2016/03/10 17:18

上記で書いてくれたサイトで調べて、php.iniのファイルに設定内容を変更したのですが、sendmail.iniのファイルが見つかりませんでした。 Windows用のPCでもXAMPPをインストールして行ってみたのですが、そこでもsendmail.iniがありませんでした。
culuculu

2016/03/12 14:41

Windows8だとsendmailファイルそのものがないことを知りませんでした。 そして、バージョンが古いとsendmailが使えないということも... Windowsのバージョンを変更し、sendmailファイルの新しいバージョンをダウンロードして入れたいと思います。 現在、地方に行っているため手元にWindows用のPCがありませんので地元に帰ったら早速やってみます。 自身の調べ不足でした。サイト情報の提供ありがとうございます。
gik

2016/03/13 05:57

こちらこそXAMPPの知識不足で申し訳ないです。 今XAMPPがなくてなかなかテストできずすいません。 次回質問のときOSのバージョンを書いてくれると助かります。 てっきりwindowsだと思ってしまいました
guest

0

phpのファイルにアクセスしようとすると、phpファイルのコード内容がブラウザ上に表示されるといったエラーが出ています。

これはメール送信というより、ApacheによってPHPがcgiとしてうまく解釈されて、PHPとして実行され丁寧のが、直接の原因と思われます。

httpd.confを追記したほうが解決までの道のりは早いと思います。

以下のような修正で解決する可能性もあると思いますよ。
http://www.ksknet.net/apache/php_1.html

投稿2016/03/05 16:54

sekitaka_1214

総合スコア509

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

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

ogaaaan

2016/03/05 16:59

phpはCGIではないですよー。 Apacheのモジュールっす。
culuculu

2016/03/05 19:10

付け足しましたが、結果は変わりませんでした。 お答えしていただき、ありがとうございました。
culuculu

2016/03/05 19:28

なぜか、文字化けが直っていました。
guest

0

phpのファイルの拡張子はphpになってますか?

投稿2016/03/05 16:53

ogaaaan

総合スコア765

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

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

ogaaaan

2016/03/05 17:04

入力フォームはhtml、 送信処理はphp、 結果画面はhtmlって 3つのファイルに分けたほうが良いですよ。 送信後に指定のファイルを表示させるためには、 header()関数使います。 ↓参考 http://wp.tech-style.info/archives/273 ただし、header()関数つかうまで、画面に一切表示しちゃいけないので、そこは気をつけてください。 あと、HTML側の <meta charset="utf-8"> が2個あるので、最初の方はいらないですね。<HEAD>
culuculu

2016/03/05 19:16

ファイルを3つに分けるのを考えてみます。 <meta charset="utf-8">が2箇所あることに気づかせていただき、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問