- - PR -
メールの一括送信処理
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-06-21 10:39
こんにちは!
よろしくお願いします。 メールの送信処理を以下のようにすると、一通ごとに送信処理がされます。 一通ごとではなく、送信するメールを一括で送信処理するようにしたのですが、 どのようにすればいいでしょうか? それと、「★☆★」の部分ですが、 送信に失敗した場合に、特定のメールアドレス(CCC@ccc.com)に 送り返すということを(失敗したメールを管理)したいのですが、 ヘッダ「Return-path」は、メールサーバでしか設定できないのでしょうか? 送信者側で、エラー時の送り返し先を設定できないのしょうか? 以上2つです。 よろしくお願いします。m(_ _)m 開発環境:WindowsXP Pro、VS.NET 2003 ( C# ) for( int i=0; i<30; i++) { System.Web.Mail.MailMessage mm = new System.Web.Mail.MailMessage(); //送信者 mm.From = "sender"+ i + " <AAA_" + i + "@aaa.com>"; //あて先 mm.To = "recipient"+ i + " <BBB_" + i + "@bbb.com>"; //件名 mm.Subject = "テスト0" + i; //本文 mm.Body = "これは、ユーザー " + i + " のテストメールです。"; //本文の文字コードを指定する(ここではJIS) mm.BodyEncoding = System.Text.Encoding.GetEncoding(50220); //ヘッダを追加する //Reply-Toを追加する mm.Headers.Add("Reply-To", "AAA_" + i + "@aaa.com"); mm.Headers.Add("Return-path", "CCC@ccc.com"); // ★☆★ //SMTPサーバーを指定する System.Web.Mail.SmtpMail.SmtpServer = "mail.aaa.com"; //送信する System.Web.Mail.SmtpMail.Send(mm); mm = null; } | ||||||||||||||||
|
投稿日時: 2004-06-21 11:36
ですが、送信者は複数いるのですか?
もしそうでなければ、Toプロパティの方をセミコロン区切りでアドレス指定すれば、一通のメール送信で複数の宛先に送ることができます。
こちらは、SMTPサーバかどこかで削除されてそうですね。 | ||||||||||||||||
|
投稿日時: 2004-06-21 11:42
ども。がるともうします。
んと、ぢゃん♪ さんが書かれているのでいくつか捕捉を。 まず、Toヘッダなのですが、無限にかけるわけではないです。 数量制限があるので、あんまりな量であれば分解することを お勧めします。 んでまぁ「他の人のアドレスが見えないように」配慮する理由 もあるので、基本的には一括送信はあまりお勧めしないです ^^; あとReturn-pathは本来MTAが設定するものです。 もしここを設定したい場合 ・問答無用で書き込んでみる ・SMTPサーバとのやり取りの「MAIL_FROM(エンベローブfrom)」で渡す のいずれかが正道かなぁ、と。 ただ、ちとWinの知識がないので「どうやって実装するか」はよく わからないのですが^^; RFCの日本語訳とかを少し読んでみると、色々書いてあると思いますよ ^^ | ||||||||||||||||
|
投稿日時: 2004-06-21 12:02
ちなみに、
| ||||||||||||||||
|
投稿日時: 2004-06-21 13:16
ぢゃん♪さん、がるがるさん、返信ありがとうございます。
送信者は複数います。 その送信者それぞれに対して、送信先、メール本文はバラバラです。 Return-pathですが、 ・問答無用で書き込んでみる とうのは、今してる状態だと思うんですが、 メールのヘッダを見てみると 「Return-Path: <CCC@ccc.com>」 は、あるのですが、ヘッダの一番上に 「Return-Path: <AAA@aaa.com>」 と、メールサーバに付け加えられたReturn-Pathがあるので、 そっちにエラー時は送られてしまいます。 ・SMTPサーバとのやり取りの「MAIL_FROM(エンベローブfrom)」で渡す というのは、ヘッダのFrom:を代えるということでしょうか? From:をCCC@ccc.comに設定すれば、Return-pathは、CCC@ccc.comに変わりますが、 差出人も変わってしまいます。>< よろしくお願いします。m(_ _)m | ||||||||||||||||
|
投稿日時: 2004-06-21 14:28
どもです。がるです。
はごく普通に正しいと思うのですが。ちぃと、マイナーな問題が ありまして。 まれ〜になのですが「BCCヘッダを削除しない」環境があるらしい です。 あと、あんまり件数が多いと結局ヘッダlengthで問題が発生しますし。 なので、ある程度以上の量になるときは、一括だと問題がおきやすい のが現状のプロトコル事情だと思うです。
んと…ヘッダとエンベローブは異なるものになります。 SMTP エンベローブ あたりをキーワードにして、Googleあたりで検索してみてくださいませ。 SMTPのやり取り(エンベローブ)とデータ(ヘッダ&ボディ)の差異が 見えてくると思うです ^^ | ||||||||||||||||
|
投稿日時: 2004-06-21 14:54
の時点で、もはやコウイチさんが最初に示した方法以外にないような。 特に送信者がバラバラ、本文もバラバラ……な時点で「一括」などないですね。
うわ〜嫌〜〜〜〜〜んな環境ですね〜〜〜〜〜〜〜〜〜。 それのどこが "Blind" carbon copy だか
そうなるのが普通ですので、だからこそのメーリングリスト環境でしょう。 (ちなみに議論用MLだと、活発なとこだと数千人は当たり前……。) ……それがだめなら直接SMTPと生なやり取りをするか。 [ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-06-21 15:06 ] | ||||||||||||||||
|
投稿日時: 2004-06-21 15:28
あります。今時、誰も使ってないとは思いますが、Netscape Messaging Server 3.5 がそうでした。BCCヘッダの削除については、特に規定されていないんでしょうか? ただ、BCCヘッダが削除される事を期待する前に、BCCをヘッダに記述すること自体、必要無いんじゃないの? と、思ってしまうのですが...。 |