みなさん。宜しくお願いいたします。
現在、PHP3.0を使用して「プログラムからのメール配信」の処理を作成しています。ここで困ったことに、「存在しないメールアドレス(入力間違いなど・・)にメール配信」した場合、当然、届かないのですが「届かなかったよ!(address unknow・・?)」みたいな情報を「プログラムで指定したメールアドレス」に返信させたいのですが、どのように記述するのか分かりません。(多分・・PHP上で記述する「ヘッター情報のパラメータ部分」に問題ありと考えていますが・・)
誰か教えてください・・サンプルがあれば大変うれしいです。
No.1
- 回答日時:
但し物が古いので最新版では異なっている可能性があります。
4.4.4. FROM / SENDER / REPLY-TOの自動利用
このあたりが参考になるかと。(機械翻訳っぽい臭いがしますので原文を用意する事をオススメします)
もっとも勧告を守らない無作法なサーバもありますので有名なサーバ群でテスト下方が良いと思いますが。
ちなみにこいつ(RFC822)をまじめに守ると一部携帯ユーザにメール出せません(笑)
お礼の旨が遅くなりまして、大変すみませんでした。有難うございます。今回のシステムは「社内(社外も含め)社員の連絡システム」として作成しているものです。残念なことにこのシステムに携わっているのが「技術オンチ」の私と新人2名での開発体制で、全然前に進まないのが現状です。alfeimさん。実を言いますと、上記資料を読んだのですが、「サッパリ」わかりませんでした・・・トホホ!大変ご迷惑かとは存じますが、「PHP3.0で記述したサンプル」みたいなものを教えていただけませんか?宜しくお願いいたします。
No.2
- 回答日時:
Unix系か、Win系かわからないので外しているかも知れませんが、php3を使用されているなら、MTA の wrap script を書くのが手っ取り早いです。
で、その script へむけて、php3.ini の sendmail_path を記述する。
sendmail なら、-f オプションをつけてあげればいいです。
ただ、alfeim さんもおっしゃっているように、RFC を一度読んだほうがよいかと。
mail 関数を使用しない方法でメールを送信できるようになれば、-f オプションの意味が理解できると思いますよ。
ちなみに、PHP 4.0.5 以上なら mail 関数の引数にパラメータを渡せるようになっています。
ご協力!大変有難うございます。お話にあるように「RFC」なるものを読んでは見ているのですが???(サッパリ)です・・トホホ!でも、頑張っています。それでですが
・「MTA の wrap script を書くのが手っ取り早いです。で、その script へむけて、php3.ini の sendmail_path を記述する。 」
この言葉が今現在理解ができていません。(勉強不足・・パンチ)情けないばかりで、こんなもんも知らんかったら「プログラム作るなぁ~」と言われそうなの覚悟で・・・教えてください。どうやって、記述するのですか?おしえて~
No.3
- 回答日時:
wrap scriptを作る、というのはsendmailやqmailなどのMTAプログラムを呼び出し、それにメール本文を渡すことで送信するメール本文をより詳細に指定することです。
これ以上の事をしようとするとMTAを使わず、自身でSMTPを話しメールを送信する必要が生じます。
なお、PHP3のMail関数でもHeader情報操作できますんでtujigeさんのかかれてる方法を使わなくでも大丈夫です(^^;
なお参考URLのレファレンスを見ると第4引数に拡張ヘッダを記述するので・・・
mail("送信先メールアドレス", "Subject", "本文",
"Reply-To: 戻り先アドレス");
と記述すればReply-Toに記述したアドレスにErrorメールが戻ってくるはずです(相手のMTAがまともならば、という注釈付ですが。NTT DocomoはFromヘッダのみしか見てなかった可能性あり)。
>プログラム作るなぁ~
とはいいませんが、(最初はみんな何も知りませんし)まずは社内にサンドボックス程度は作れる程度の知識は身につけてから、にした方がよいでしょう。
いきなり外部のサーバに向けて実験では正気を疑われても文句は言えません。
なお、あまり自信がないのであれば、この辺外注にしちゃったほうがよいと思います。なにせ、相手はInternetでつながった世界中のサーバ、ということなんで下手打つと自分だけでなく外のサーバにも迷惑がかかりますので。
そのトラブルが元で会社の信用度とかも落ちる、ということも上に説明しておけば外注にすることも考えさせやすいかもしれません。
とりあえず、自分たちで何とかするのであれば・・・DNSによる名前解決の原理、メール配送原理、RFC822、SMTPによるメール配送手続き、あたりは最低限の知識として身につけておきましょう。
すでに立ち上がってるサーバの設定がなされているのであれば、その管理者に聞けばどのような本を読めばいいかぐらいは聞き出せるでしょう。
参考URL:http://www.php.net/manual/ja/function.mail.php
外注ですよね~考えたのですよ!それも・・残念ながら「そこらへんの事ができる開発屋」が身近にいなかったのです・・また、「高いし・・・」ってなことで、自力での開発になってしまいました・・トホホ!再度、挑戦いたします。
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引数としてコマンドラインパラメーターを指定できるようになって、便利になったな。と感じております。
# すいません。チャチャでしたね。
この回答への補足
//$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");
※こんなロジックになっているのですが・・・?
色々と有難うございます。日夜頑張っております。本当に皆さん詳しいですね~(尊敬です)ところで、mail関数にて皆様が言われていることを実際にやってはみたのですが「???(戻ってこない)」のです。この文章で気になったのは、「たとえ、追加ヘッダ情報(mail関数の第4引数)に Return-Path・・・・」なのですが、この「envelope from 」なるものもヘッダー情報として記述するのですか?またまた、Sendmailの難しい指定の中に隠れているのですか?教えてください!
No.5ベストアンサー
- 回答日時:
このスペースでは詳しく書けないのですが、envelope from を指定しない場合、phpから送信されたメールの from (この from はメールのヘッダにある from ではありません。
smtp session での from です。)は、apache のユーザー、つまり大半の apache では、nobody となっているはずです。で、結果として、nobody, MAILER-DEAEMON, postmaster, root のいづれかにかえってきているんでしょう。
もういちど、sendmail の -f オプションを確かめてみては?
# 別に、情報の出し惜しみをしているわけではないです。:-)
# こういったプログラムを書く場合「関数があるから」ではなく、メールが送信
# されるプロセスを知っておいたほうがよいからです。
# ちなみに、y-boss さんの求めている「そのものズバリのサンプル」
# はしっかり検索すればありますよ。
# php のメーリングリストを検索してみては?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(暮らし・生活・行事) → ※このメールは、ファミマTカードをファミペイに登録されたことがある会員様にお送りしております。す 4 2023/05/03 12:24
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
- Amazon アマゾン 7 2022/06/11 11:03
- デスクトップパソコン outlookのメール:outlook.comの表示方法を教えて下さい 1 2022/03/28 00:30
- Amazon ネット初心者に詐欺・フィッシングメールを確実に見分けさせる方法はありあせんか? 5 2023/06/28 11:03
- Outlook(アウトルック) Outlookからドメインを間違えて(@icloud正→@iclud誤)メールを送ってしまいましたが 5 2023/07/09 19:33
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- Facebook 「グレーアカウントに対する対応が必要です」という通知の対応について 2 2022/04/14 09:43
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- その他(IT・Webサービス) [PayPay銀行キャッシュカード拾得の件] このメールは本物か? 6 2022/09/15 21:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
存在しないメールアドレスかど...
-
一定時間毎に同じ動作を繰り返...
-
VisualC++アプリからメイルを飛...
-
javamailで220の応答が遅い
-
phpメールフォームから送信され...
-
ワードプレス、Contact Form 7...
-
リファラが取得できない?
-
AccessのDoCmd.SendObjectについて
-
送信日時を指定してメールを送...
-
mail関数を使用した場合のエラ...
-
ブラウザの更新ボタン
-
VB6にてメールを送信する方法
-
問い合わせ完了ページでの二重...
-
こちらはただの直列処理ですか?
-
フォントの色を変えるには?
-
form actionで二つ送信先を指定...
-
onedrive にexcelファイルをア...
-
Apacheでhttp://localhost/が表...
-
シェルスクリプトからphpファイ...
-
FTPコマンドでディレクトリごと...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードプレス、Contact Form 7...
-
コマンドプロンプトで添付ファ...
-
存在しないメールアドレスかど...
-
VB6にてメールを送信する方法
-
ヒアドキュメントを利用してメ...
-
メールアドレスの存在確認はで...
-
Bookを閉じて保存した時のみ実...
-
AccessのDoCmd.SendObjectについて
-
submitボタンの二重送信について
-
リファラが取得できない?
-
HPの更新をしたら自動でメール...
-
javamailで220の応答が遅い
-
Q)PHPでメール送信について
-
<HTML>~入る タグ が無いから ...
-
mail関数を使うと遅いので
-
phpメールフォームから送信され...
-
ロリポップと、phpで自動の返信...
-
ループの中で mailItemObj.Disp...
-
ランダムな文字列を生成しその...
-
VB.NETでフリーメールアドレス...
おすすめ情報