mb_send_mail関数の送信元メールアドレスが正しく設定されない問題

このQ&Aのポイント
  • さくらサーバで2つのドメインを持っており、片方のドメインを使用したサイトから送信されるメールのヘッダで送信元メールアドレスが正しく設定されません。
  • mb_send_mail関数の第四引数で送信元メールアドレスを指定しても、実際に送信されるメールのヘッダには別のドメインの主要部分が含まれてしまいます。
  • 調査の結果、php.iniやサーバの設定に問題がある可能性がありますが、個別に修正する方法はわかりません。お知恵をいただけないでしょうか。
回答を見る
  • ベストアンサー

mb_send_mail関数により送信されるメールのヘッダで送信元メールアドレスがうまく設定されません

さくらサーバで2つのドメインを持っており、その一方のドメインを用いたサイトを構築しています。 このサイトより、phpのmb_send_maiにより送信されるメールヘッダーに送信元メールアドレス(上記一方のドメインを含む)を設定しようといろいろ試したのですが、 送信されたメールの送信元アドレスとして、 上記一方のドメインではなく、他方のドメイン(初期ドメインではなく、1つ目にとったドメイン)の主要部(メールアドレスであれば、本来@の前に配置される部分)が盛り込まれてしまいます。 mb_send_mai関数の第四引数として、"From:.....@*******"などと設定しても、受信されるメールには全く反映されません。 php.iniやサーバの設定に何か問題があるのか調べたのですが、 自力では無理のようです。 どうか、お知恵をかして下さい。 よろしくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • ym035
  • ベストアンサー率50% (6/12)
回答No.1

私の環境はXREAでさくらインターネットではないのですが,このプログラムで上手くいきましたので試してみてください。 //言語と内部エンコーディングを指定 mb_language("japanese"); mb_internal_encoding("EUC-JP"); //メール内容設定 $to = "aaa@aaa.com"; //送信先 $body = "メール本文"; //本文 $subject = "メール件名"; //件名 $from = "送信者"; //送信者 $header = "From:" . mb_encode_mimeheader($from, "EUC-JP", "Q") . " <bbb@bbb.com>"; //メール送信 if (mb_send_mail($to, $subject, $body, $header)) { echo "メール送信完了"; }

tfj3116
質問者

お礼

早々に教えて頂き、ありがとうございます。 また、返信が大変遅れて、申し訳ありません。 教えて頂いたことがヒントとなり、 文字コードの設定に大きな誤りがあることを確認できました。 また、mbに関連するphp.iniの設定を見直し、 あれこれ試行錯誤の結果、先ほどやっと解決しました。 本来、php.iniに予め設定しておくべき多くの点が漏れており、 大変お手数をかけてしまいました。 本当にありがとうございました。

関連するQ&A

  • mb_send_mail について

     お世話になります。 Linux1.3 + Qmail の構成のメールサーバーとApache1.3+php4の Webサーバーのphp からmb_send_mail関数でメールを飛ばしても受信できません(エラーも出ません) yahooメールなど他のところへは問題なく飛ばせるのですが 同じネットワーク内のドメインに対してはメールが出せない状態です。 メールソフトからの送信では問題ありません。 何か解決法はありますでしょうか?

    • 締切済み
    • PHP
  • mb_send_mailについて

    mb_send_mailで送信する時に、 oct.zaq.ne.jpのドメインには何度やってもメールが送信出来ません。 また、違うドメインにメールを送信した場合でも、100回に一度は文字化けしてるときがあります。 サーバはロリポップなのですが、 考えられる事項を教えて頂けないでしょうか? どうか、宜しくお願い致します。

    • ベストアンサー
    • 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)が送信されません。

    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"); ?>

    • ベストアンサー
    • 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と送信日時

    mb_send_mailで送ったメールの送信日時が 9時間後の未来になってしまいます。 どこかの設定を忘れてるのでしょうか? coreserverのレンタルサーバーを使っています。 宜しくお願い致します。

    • 締切済み
    • PHP
  • mb_send_mailでのメール送信がエラーしてしまいます。

    PHPを独習しています。 mb_send_mailでのメール送信でつまづいてしまっており、 ご回答いただければ幸いです。 mb_string等の設定は正常に出来ていると思うのですが、 下記のとおり、mailserverに接続できない旨のエラーが 表示されてしまいます。 ●エラー本文 Warning: mb_send_mail() [function.mb-send-mail]: Failed to connect to mailserver at "(契約サーバー)" port 465, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\Program Files\Apache Group\Apache2\htdocs\sample\Part4\4-8\4-8-1.php on line 11 ●PHP本文 $mailto = "(自分のアドレス)"; $subject = "test"; $content = "本文test"; $mailfrom = "From:aaaa@bbb.ccc"; $mailfrom="From:" .mb_encode_mimeheader("木村") ." <ddd@eee.fff>"; if (mb_send_mail($mailto,$subject,$content,$mailfrom)){ echo "送信成功"; }else{ echo "送信失敗"; もしお分かりになる方がいれば、 どうかご教授のほど、よろしくお願いします。

    • ベストアンサー
    • PHP
  • mb_send_mail()が使えない

    WebからPHPのmb_send_mail関数を使用してメールを送信しようとしていますが、なぜか送信されません。 原因についてお分かりになればお教えください。 また、下記以外に必要な情報があればお教えください。 コマンドライン上でのmailコマンドによるメール送信は可能な状態です。 sendmailの代わりにqmailをインストールしているため、/usr/sbin/sendmailから/var/qmail/bin/sendmailへシンボリックリンクを貼っています。 また、PHPのmail()は"Call to undefined function: mail()"エラーとなりますが、mb_send_mail()ではエラーが発生しません。 ●OS:TurboLinux7 ●言語:PHP4.3.3 ●phpのconfigure時のオプション:  ./configure --with-apxs=/usr/sbin/apxs \  --enable-mbstring ●/usr/local/lib/php.iniのsendmail_path設定:  sendmail_path = /var/qmail/bin/sendmail ●テスト用PHPのソース(実行すると常に「メール送信エラー」になります) <?php $ans = mb_send_mail("メールアドレス","件名","本文"); if ($ans) { print "<P>メール送信完了</P>"; } else { print "<P>メール送信エラー</P>"; } ?>

    • ベストアンサー
    • PHP

専門家に質問してみよう