• ベストアンサー

mail関数を使用した場合のエラー情報取得方法

tujigeの回答

  • tujige
  • ベストアンサー率68% (13/19)
回答No.4

すいません。チャチャになるかもしれませんが :-) Reply-To: は、返信のアドレスであって、y-boss さんのおっしゃっている届かなかった場合の戻りアドレスは、 Return-Path: ではなかったでしょうか?(Errors-to: もあったと思いますが、あれはすでに時代遅れですよね?たしか。) で、sendmail の -f オプションは envelope from を指定して送るオプションですので、結果として、Return-Path: がそのアドレスになるはずです。 Host unknown, User unknown 等々のエラーがそのアドレスに戻ってきます。 たとえ、追加ヘッダ情報(mail関数の第4引数)に Return-Path: を書いたとしても、envelope from が指定されていなければ効力は持たなかったような気がします。 で、私の環境では、wrap script を用意して envelope from を追加するようにしているわけであります。 PHP 4.0.5 から、第5引数としてコマンドラインパラメーターを指定できるようになって、便利になったな。と感じております。 # すいません。チャチャでしたね。

y-boss
質問者

お礼

色々と有難うございます。日夜頑張っております。本当に皆さん詳しいですね~(尊敬です)ところで、mail関数にて皆様が言われていることを実際にやってはみたのですが「???(戻ってこない)」のです。この文章で気になったのは、「たとえ、追加ヘッダ情報(mail関数の第4引数)に Return-Path・・・・」なのですが、この「envelope from 」なるものもヘッダー情報として記述するのですか?またまた、Sendmailの難しい指定の中に隠れているのですか?教えてください!

y-boss
質問者

補足

//$mail_buf : 送信先メールアドレス格納 //$mailtitle : 件名格納 //$msgbuf : メール本文格納 //$headers : ヘッダ格納 $headers = "From: " . $e_mail . "\n"; $headers .= "X-Sender: " . $e_mail ."\n"; $headers .= "X-Mailer: PHP3 Engine\n"; // メイラー //$headers .= "X-Priority: 1\n"; // 緊急メッセージ! $headers .= "Return-Path: " . $e_mail . "\n"; // エラー時の返信先 $headers .= "Reply-To: " . $e_mail; //mail送信 $rtn1=mail("$mail_buf", "$meiltitle", "$msgbuf","$headers"); ※こんなロジックになっているのですが・・・?

関連するQ&A

  • メール配信リストからエラーメールを自動で削除する方法

    メールマガジン配信でいつまでも 存在しないメールアドレスへメール送信しないように したいのですが以下2つの方法のいずれかを された事がある方はおられますか? 1.メールログを1日毎にプログラム解析する 2./etc/aliasに指定したメールアカウントerror等に エラー時にメールが返されるように メールヘッダにX-Errto:error@自ドメイン を記述してメール配信し、aliasで指定した プログラムでエラーメールアドレスを自動削除 できればエラーメールアドレスがすぐにわかる 2.で実現したいですが、X-Errtoのヘッダはあまり 聞かないので果たしてできるのかがわかりません。

  • メールアドレスのみを抜き出す方法

    phpでメールの返信プログラムを作成しています。 メール送信プログラムはできたのですが、さんぷる<exsample.com>やexsample.com(sample)といった文字列の中からメールアドレスのみを抜き出す方法がわかりません。 ご教授よろしくお願いします。 動作環境:Windows+Apache2.0.52+php4.4.2

    • 締切済み
    • PHP
  • メールのCCに複数のアドレスを指定する時の記述

    PHPでメール配信処理をしています。 TOもしくはCCに複数のアドレスを指定する時に「,」(カンマ)で指定することで 複数のメールアドレスに配信されるという認識でPHPコードを記述しました。 しかし、TOは正常に配信されますがCCだけ最後に指定したアドレスが配信されないです。 Webで調べましたが、やはり分からないのでアドバイスいただきたいです。 OS:CentOS release 5.4 PHP 5.1.6 mb_language("ja"); mb_internal_encoding("UTF-8"); $header = "From: " . mb_encode_mimeheader("TOサンプル") . "<" . $from . ">\n"; $header .= "Cc: " . mb_encode_mimeheader("CCサンプル") . "<aaa@sample.com>"; $header .= "," . mb_encode_mimeheader("$cc") . "<" . $cc . ">"; mb_send_mail($to, $sub, $data, $header) or die ("メールの送信に失敗しました"); aaa@sample.com は常にCCに入れるためここで記述しています。 受信後のメールのヘッダを見ると下記のようになります。 <"bbb@sample.com, ccc@sample.com, ddd"@sample.com> 最後に指定したメールアドレスの「@」の直前に「"」が入ってしまい メールアドレスのフォーマット要件を満たしていないため配信されないことは分かったのですが、 何故こうなるかが分かりません。 TOに同様に「,」区切りでメールアドレスを複数指定すると、問題なく配信されます。 cat -e で改行コードもチェックしましたが問題ないです (全て末尾に「$」が付いたため) 宜しくお願いします。

    • ベストアンサー
    • PHP
  • QRコードでメールアドレス以外の情報を取得

    QRコードで読み取ったメールアドレスに空メールを送信すると、なんらかのプログラムが実行されるというのはよくあると思います。 読み取る際に、メールアドレスでけでなく、件名や本文も読み取れるような記述方法ってないでしょうか? 要は、パラメータのように、ある値を渡したいのです。

  • mail関数のheader情報

    PHPのmail関数のheader情報には、メールの件名、送り先メールアドレス、差出人メールアドレス等々が指定できますが、上記以外に独自の(独自に作成した基準の)情報を加えてもメールの送受信に問題は起こらないのでしょうか? 例えば、ヘッダー情報に「AB123」など独自の記号を加えて、受信者のメールソフト内で、その記号により自動的にメールを振り分けたいのですが? もちろんこれには、受信者がメールのヘッダーに独自の記号が不可さていることを予め知っていて、かつ、メール振り分け機能のついたメールソフトを使用していることが前提です。 また、上記が可能な場合、そのやり方などが詳しく記載されているサイトなどお知りでしたら、お教え下さい。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • メール送信失敗アドレスを取得

    一括メール送信プログラムで送信した際、リターンメールで指定アドレスへ返ってくるメールの送信先アドレスをPHPで取得する方法ってありますか? 要は送信できなかったアドレスを一覧で見れるようなシステムを作りたいんです。

    • 締切済み
    • PHP
  • TimerProc コールバック関数を利用する方法

    タイマを使いたくてメッセージマップでOnTimerを追加しましたが、 CWnd::SetTimerの第3パラメタに何を設定したらよいかわかりません。 lpfnTimer WM_TIMER メッセージを処理するためのアプリケーションが用意した、 TimerProc コールバック関数のアドレスを指定します。 このパラメータが NULL の場合は、WM_TIMER メッセージはアプリケーションの メッセージ キューに置かれ、CWnd オブジェクトによって処理されます。 とあり、NULL指定のサンプルはあるのですが、 「TimerProcコールバック関数のアドレスを指定する法」を試したいのです。 関数のアドレスというのが何をいっているのか理解できないのですが 試しに void CXXXCtrl::method1() { SetTimer(timerID, 10000, &OnTimer); } void CXXXCtrl::OnTimer(UINT nIDEvent) { // 処理 COleControl::OnTimer(nIDEvent); } としたところ error C2276: '&' : 仮想関数のアドレスを取ろうとしました。 のエラーになってしまいます。

  • mail関数を使った場合のReturn-Pathは?

    Apache 1.3.33 PHP Version 4.4.1 $header = "From:".$_from; $header .= "Return-Path:".$_from; のようにヘッダー部を設定し、mail関数を使っています。 $result = mail($_email, $subject, $message, $header); しかし、Return-Pathが反映されていないようで、 メールが届かない場合などの、 「failure notice」メールが Apache側で設定されているメールアドレスに 送信されてしまいます。 どのように設定すればよろしいのでしょうか? またパラメータを使って $header = "From:".$_from; $para ="-f".$_from; $result = mail($_email, $subject, $message, $header,$para) 上記のように記述してみたのですが、だめでした。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのメール関数について

    メールマガジン発行を考えているのですが、 読者のメールアドレスをMysqlに格納し、 PHPのメール関数で配信しようと思っています。 そこで、PHPのメール関数とは、 PHP→そのサーバのMTA→相手MTA と行くのでしょうか? それとも、 PHPメール関数自体が直接DNSサーバを探し確認した上で、 相手MTAに送信するのでしょうか? (つまりMTAを利用しないのでしょうか?) 基本的な質問で申し訳ございません。 MTAを利用するのなら配信スピードがqmailの方が 良いと聞きますので、sendmailから変更しようかと 思っています。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • System関数で変数を受け渡す方法

    Apache+PHP+MySQL1でサイトを作っています。 時間がかかる処理をバックグラウンドで処理したいのですが、メイン処理の変数をバックグラウンド処理に受け渡したいのですがうまくいきません。 http://www.stackasterisk.jp/tech/php/php02_02.jsp インターネットで調べたところ上記URLが見つかったので参考にサンプルを作ってみました。 --------sample.php(メイン処理)------- <?php $arg = 123456; System("/usr/local/bin/php bgprog.php $arg &"); ?> --------bgprog.php(バックグラウンド処理)------- <?php sleep(10); echo "読み込み完了<br>"; echo $arg; ?> このサンプルだと10秒スリープした後に「読み込み完了」と表示されるのですが$argが表示されません。 上記URLに「メインの処理から引数を渡したい場合には、bgprog 側できちんと受け取るようにしておかなければなりません」と書かれているのですがその方法がまったくわかりません。 このプログラム自体に無理があるのか、bgprog側でなんらかの処理をすれば解決するのかもわかっていません。 よろしくお願いします。

    • ベストアンサー
    • PHP