メールフォームが送信されない原因と対処法

このQ&Aのポイント
  • 質問者はmb_send_mailを使ったメールフォームで問題が発生している。特に、宛先のアドレスを変数から取得しようとしているが、うまくいかないようだ。
  • シングルクオテーションがないせいで、メールの送信ができていない可能性がある。
  • 問題の原因として、PHPのバージョンやサーバーの設定も関係している可能性がある。
回答を見る
  • ベストアンサー

メールフォーム(mb_send_mail)が送信されません。

mb_send_mailを使ったメールフォームで分からないことが御座いますのでどなたかご教授下さい。 HTMLで入力させた宛先のアドレスにサイトのアドレスを紹介する為に使用するメールフォームです。 以下のソース部の$mlto = 'hoge@hoge.jp';の部分を HTMLより引き継いできた$adにメールを送信したい (イメージ的には $mlto = $ad;) のですが、うまくいきません。 シングルクオテーションが無いからなのか、送信できません。 ちなみに、 $mlto = 'hoge@hoge.jp';のように すれば、普通に送信できます。 どなたかご回答宜しくお願い致します。 PHP4のLINUXのレンタルサーバです。 ソースは以下の通りです。 <?php $ad=$_POST['add']; $mlfr = 'hogehoge@hogehoge.jp'; $mlto = 'hoge@hoge.jp'; $mlsb = 'タイトル'; $mlms = 'サイトのアドレス'; $jcph = '.'; mb_send_mail($mlto, $mlsb, $mlms, $mlfr); header("Location: ok.html"); ?>

  • rad6
  • お礼率88% (103/117)
  • PHP
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

mlfr = 'hogehoge@hogehoge.jp'; $mlto = $_POST['add'];; echo "変数add:".$mlto."<BR>\n"; $mlsb = 'タイトル'; $mlms = 'サイトのアドレス'; $jcph = '.'; mb_send_mail($mlto, $mlsb, $mlms, $mlfr); として、変数の中身はどうなっているでしょうか。

rad6
質問者

お礼

親切に再書き込みありがとう御座います。 私のミスでした。 引数がきちんとPHPにわたってませんでした。 HTMLの間違えだということが、YUTAKUN007殿の おかげで判明しました。 本当にありがとう御座いました。

その他の回答 (1)

回答No.1

私の環境では問題なく動きましたが・・・ 具体的のどのようなエラーメッセージが出ますか? エラーが起きている変数をダンプしてみると 幸せになれるかもしれません。 また、このスクリプトのままですと エンコードされていない為文字化けしてしまいますよ。

rad6
質問者

お礼

上記のソースだと、おっしゃる通りうまく動作しますが、mb_send_mail()の宛先アドレスをHTMLから引き継いできた値で送信する方法を知りたいのです。 例えば、 $mlfr = 'hogehoge@hogehoge.jp'; $mlto = $_POST['add'];; $mlsb = 'タイトル'; $mlms = 'サイトのアドレス'; $jcph = '.'; mb_send_mail($mlto, $mlsb, $mlms, $mlfr); のようなイメージで引き継いできたアドレスに送信しようとすると、エラーは出ませんが送信がうまくいっていません。 文字化けの件は大丈夫です。

関連するQ&A

  • mb_send_mailを実行するとエラーになります

    Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in ・・・・ XPにPHPとアパッチを入れて <?php $mlfr = "xxxx@nifty.com"; $mlto = "xxxx@mail.goo.ne.jp"; mb_internal_encoding("EUC-JP"); $mlsb = "たいとる"; $mlms = "ないよう"; $mlhd = "from: $mlfr\r\n"; mb_send_mail($mlto,$mlsb,$mlms,$mlhd,"-f".$mlfr); ?> を実行してもメールが送られません XPにメールサーバを入れなければならないのでしょうか?

    • ベストアンサー
    • PHP
  • mb_send_mailでつまづいています

    $jimu_mail="hoge@hogehoge.com"; $return_path = '-f'.$jimu_mail; $rcd = mb_send_mail($mlto, $mlsb, $mlms, $mlfr, $return_path ); という記述があるのですが、mb_send_mailの5番目のパラメータの「$return_path」の部分がどういう働きをもつのか良く分からないのです。 PHP公式サイトのマニュアルには 「MTA のコマンドラインパラメータです。sendmailを使用する場合に正しいReturn-Pathを設 定する場合に便利です」 とありますが、正直言っている意味がわかりません・・・。 実は、以上の状態ですと、メール送信されなかったのですが、2行目を $return_path = $jimu_mail; と、'-f'を取り除いたら送信できるようになりました。 これらについて、 どうして「-f」を取り除いたら送信できるようになったのか、 また、マニュアルにある 「MTA のコマンドラ インパラメータです。sendmailを使用する場合に正しいReturn-Pathを設 定する場合に便利です」の 意味することを解説してくださる方がいらっしゃればとっても助かります。 よろしくお願いします。 環境はPHP Version 4.3.4 Apache/1.3.29 (Unix) です

    • ベストアンサー
    • PHP
  • メールフォームでご質問が御座います。

    PHP初心者です。 <?php #$From = i18n_convert(i18n_mime_header_decode( $FromHeader ), "EUC"); $na='info@**.co.jp'; $add=$_POST['add']; $mlfr = $na; $mlto = $add; $mlsb = 'パスワード再発行'; $mlms = '本メールに思い当たりの無い方はお手数ですが破棄願います。パスワード「'.$pw.'」。'; $jcph = '.'; mb_send_mail($mlto, $mlsb, $mlms, $mlfr); header("Location: ok.html"); ?> 上記のソースですが、届くメールは以下の※になります。 なぜ、mime-versionとかcontent-typeとか表示されてしまうのでしょうか? mb_send_mailの仕様ですか? そのような表示を消すにはどうすれば良いのでしょうか? どなたかご教授宜しくお願い致します。 ※ info@*.co.jp Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 本メールに思い当たりの無い方はお手数ですが破棄願います。

    • ベストアンサー
    • PHP
  • mb_send_mail()に関しまして

    初めて投稿させて頂きます。 PHPを触り始めて間もない者ですが、よろしくお願い致します。 現在、PHPの勉強を兼ねまして空メールを送るプログラムを作成しております。 フォームにボタンを1つ設け、そのボタンを押下すると指定のあて先に空メールを送るという簡単なものです。 【html内のボタンの設定】 <form name="top" method="post" action="a.php"> <input type="submit" value="空メールを送る"/> </form> 【a.php(正しく送れたかを知るためにメッセージを表示するようにしてあります)】 <html> <head> PHPメールテスト送信 </head> <body> <? $address = '送信先メールアドレス'; $subject = ''; $message = 'PHPからのテストメール'; $header = "Content-Type: text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address,$subject, mb_convert_encoding($message,"JIS","EUC-JP"),$header))←エラー行 { print("送信成功!!"); } else { print("エラー:送信失敗!!"); } ?> </body> </html> このプログラムを実行すると以下のエラーが発生します。 Warning: mb_send_mail() [function.mb-send-mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in C:\Program Files\xampp\htdocs\top.php on line 15 参考書を見ながらプログラムを作成したのですが、記述、もしくは設定が関係しているのでしょうか。 分かる方には非常にくだらないことかもしれませんが、ご教授お願い致します。

    • 締切済み
    • PHP
  • mb_send_mail()関数のタイトルで特定の文字が入ると送信できません。

    環境:WinXP+Apache2+PHP5 mb_send_mail()でタイトルに ”時間は何時でもokです。” を入力すると、送信に失敗します。 コードは以下の通りです。よろしくお願いします。 <?php $address=$_POST['address']; $subject=$_POST['subject']; $message=$_POST['message']; $header="Content-Type: text/plain;charset=iso-2022-jp"; mb_language("Japanese"); if(mb_send_mail($address,$subject,mb_convert_encoding($message,"JIS","EUC-JP"),$header)){ print("送信完了しました"); }else{ print("エラー:送信に失敗しました"); } ?> ($subject="時間は何時でもokです。"にするとエラーになります。)

    • 締切済み
    • PHP
  • mb_send_mailでのメール送信

    会員制サイト内で各種メールの送信にmb_send_mail関数を使用しています。 会員登録の際に、登録申込者側にメールが送信されない事例が何件か発生しており、原因究明中です。 以下、メール送信関数の部分です。 $mail_to = 送信先アドレス $mail_subj = タイトル $mail_comm = 本文 $mail_from = "From: ".送信元アドレス mb_internal_encoding("sjis"); mb_language("Japanese"); mb_send_mail($mail_to,$mail_subj,$mail_comm,$mail_from); 考えられる原因は何があるでしょうか。どなたか詳しい方、回答宜しくお願いします。

    • 締切済み
    • PHP
  • PHP mb_send_mail メール送信 550エラー

    PHP mb_send_mail メール送信 550エラー お世話になります。 PHPにてmb_send_mail関数を使い、メール送信を行っているのですが・・・ 特定の送信先に対して以下のメールが帰ってきます。 ※相手先メールアドレスは伏せております。 件名:Returned mail: see transcript for details The original message was received at Mon, 29 Mar 2010 18:14:56 +0900 (JST) from localhost [127.0.0.1] ----- The following addresses had permanent fatal errors ----- <***@***.***> (reason: 550 Host unknown) ----- Transcript of session follows ----- 550 5.1.2 <***@***.***>... Host unknown (Name server: ***.***.: host not found) 送信先のメールアドレス自体は存在しておりますが、mb_send_mailを使っての送信が失敗します。 また、全てのアドレスで上記のエラーが発生するというわけではないようです。 これを正常に送信させるにはどのようにすればよろしいでしょうか・・? ご回答よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mb_send_mailに関して

    環境:Windows2008 Server R2 64bit/php5.3.22 教えて下さい。 Windows2008 Server R2 64bit 環境にてPHPを動作させ、mb_send_mail()関数を使って メールを送信しようと考えています。 PHPも問題なく動き、mb_send_mail()関数用にphp.ini も以下のようにメンテナンスし、記述も 問題ないかと思われますが、メールの送信ができません。。。 64bitでは何か設定が違うのでしょうか? 教えて頂きたいと思います。 《php.ini》   [mail function]  For Win32 only.          ← 32bit only とわざわざ記述がある為、64bit ではNG?  http://php.net/smtp  SMTP = XXXXXX  http://php.net/smtp-port  smtp_port = 25  For Win32 only.  http://php.net/sendmail-from  sendmail_from = XXX@XXX.co.jp 《記述内容》  <?php  $mailto = "XXX@XXX.co.jp";  $subject = "掲示板";  $content = "新規投稿がありました。 ☆☆☆";  $mailfrom = "From:mail@colcoat.co.jp";  mb_language("ja");  mb_internal_encoding("UTF-8");  if(mb_send_mail($mailto,$subject,$content,$mailfrom)){  }else{   echo "送信できませんでした";  }  ?> よろしくお願いします。

    • ベストアンサー
    • PHP
  • mb_send_mailで文字化け

    Windows環境でmb_send_mailを使い、メール送信のテスト を行っています。 文字コードの変換周りで、いろいろ試しているのですが、 うまくいきません。 Apache + PHP (Window)  ↓ メールサーバー(RedHat)  ↓ メール受信(Window) 上記の環境で、文字化けしないで、 メール送信するには、どうしたら良いのでしょうか? (コーディング例) mb_send_mail( $address, mb_convert_encoding($subject,"EUC-JP"), mb_convert_encoding($message,"SJIS"))

    • 締切済み
    • PHP
  • mb_send_mailで送られたメールに改行コードが入る。

    PHPのメールについてお伺いします。 php version 5.0.4 以下のようなメールを作成して、$mail1(送信先)と webmaster@hoge.comからの転送を受信しています。 ところが、$mail1の内容は改行コードは入った1行おきの表示になってしまいます。webmaster@hoge.comからの転送の方は改行されていません。 例) こんにちは。 お元気ですか。 と こんにちは。 お元気ですか。 の違いです。 改行しないようにしたいのですがどう直したらよいのでしょうか。ご教授ください。 メールソフトはqmailを使用しています。サーバーはFedora Core4です。 プログラムの1部 function sendMail($mail1,$subject,$textarea1) { $frmail = "From: xxxx@hoge.com \r\nbcc: webmaster@hoge.com"; $subject1 = mb_convert_encoding("問い合わせ","EUC-JP","auto"); $message = mb_convert_encoding(" 題目:{$subject} \n 内容: \n {$textarea1}","EUC-JP","auto"); mb_send_mail($mail1,$subject1,$message,$frmail); $mail(送信先)は関数の外部で設定しています。

    • ベストアンサー
    • PHP

専門家に質問してみよう