• ベストアンサー

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) 上記のように記述してみたのですが、だめでした。 よろしくお願いいたします。

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

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

No.1回答者です No.3回答者さんの言うように mail()関数第4パラメータにReturn-Path をつけないと、 メールクライアントでのReturn-Pathにはサーバーの設定したメールアドレスになっていました。 逆に付けると、Return-Pathで指定したアドレスになりました メールサーバーのログを見ると、 Return-Path を付けた場合には msg aaaaa bytes from (Return-Pathのアドレス) 付けない場合には msg aaaaa bytes from (サーバーのアドレス) でした。これがEnvelopeFrom に相当 私のところの環境ではEnvelopeFrom に対してどうやら上書きするようです。 >SMTP server response: 451 私のところでは出なかったのでメールサーバーの環境によって違うのかもしれません。 参考にならなくて申し訳ないです

rabu_chihaha
質問者

お礼

とんでもない。ありがとうございました。

その他の回答 (3)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

Return-Path: ヘッダは送信側でつけるヘッダではなく、最終的に受信するメールサーバーが EnvelopeFrom からつけるものです(そのサーバーの設定によりつけないこともある)。また、メールサーバーのエラーメッセージはReturn-Pathヘッダをみてそこに返しているわけではなく、EnvelopeFromのアドレスに返しているので、送信側でReturn-Pathというヘッダを作っても無意味です。 ここまでは経験者・自信あり。以下は一般人・自信なし。 EnvelopeFrom は sendmail の -f オプションで設定できるはずですが、効かないということは、/etc/php.ini の sendmail_path ですでに -f が指定されているのではないでしょうか?

rabu_chihaha
質問者

お礼

ありがとうございます。 Return-Pathを設定してもだめですか。(-_-;) php.iniはレンタルサーバですので変更できないから だめですね。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

#1の方のmb_send_mailを単にmailにするだけで行きませんか? 第4引数が追加ヘッダーになっているので、そこに追加すれば良さそうな気がしますが・・・

参考URL:
http://www.php.net/manual/ja/function.mail.php
rabu_chihaha
質問者

お礼

ありがとうございます。 メールヘッダーを見ると Return-Path: <****1@.co.jp> ・・・ Return-Path: ****2@.co.jp と表示されています。 はじめに表示される ****1@.co.jpはApache側で設定されているメールアドレスで、 複数行下に表示されている ****2@.co.jpは実際に利用したいメールアドレスです。 上の Return-Path: <****1@.co.jp> を消したいのですが。

回答No.1

使用している関数は違いますが以下のようにしてエラーメールが Return-Path: に指定したアドレスに返ってきます。 mb_send_mail($send_mail_to, "社内掲示板にメッセージが投稿されました", $message_body, "From: webmaster@{$_SERVER['SERVER_NAME']}\r\n" . "Return-Path: $email\r\n" . "Date: ".date("r")."\r\n" . "Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" . "X-Mailer: PHP/" . phpversion() . "\r\n"); $email にエラーが返る。 ちなみに PHP-4.3.11 です。

rabu_chihaha
質問者

お礼

ありがとうございます。 私も以前mb_send_mail関数を使っていましたが、 バグがあるようなことが書いてあったので、 mail関数に変更しました。 上記のように変更し実行すると Warning: mb_send_mail(): SMTP server response: 451 See http://pobox.com/~djb/docs/smtplf.html. in **** のエラーが出てしまいます。 以前も出た気がします。

関連するQ&A