- PR -

System.Web.Mail.SmtpMailを使っての大量メールについて

1
投稿者投稿内容
tsuboyang
会議室デビュー日: 2002/09/30
投稿数: 6
投稿日時: 2002-09-30 20:42
はじめまして。
tsuboyangといいます。

今回、System.Web.Mail.SmtpMailを使って大量の人にメールを送信する
コンソールアプリケーションを作ろうとしています。
コードとしては以下のような感じです。

SmtpMail.SmtpServer = "サーバ名";
// 複数の宛先に送信する
foreach (User u in Users)
{
// メール作成
MailMessage mailMessage = new MailMessage();
mailMessage.BodyEncoding = Encoding.Default;
mailMessage.BodyFormat = MailFormat.Text;
mailMessage.Subject = "メールのサブジェクト";
mailMessage.From = Mail.From;
// メール送信
mailMessage.To = User.Email; // 宛先
mailMessage.Body = "メールの本文";
SmtpMail.Send(mailMessage); // メールを送る

System.Threading.Thread.Sleep(100);
}

これで実際にメールは送れるのですが、最後のスレッドのSleepを
使わなくても5秒間に1回しかメールを送信してくれないみたいです。
これでは遅すぎて使い物にならなくて困っています。
SmtpMailもCDOSYSも初めて使用するのですが、こういうものなのでしょうか?
どこかでこの5秒というのは制御できるのでしょうか?

また、こういう場合にSmtpMailクラスを使用するのは間違っているのでしょうか?

ご存じの方、教えていただければ幸いです。
よろしくお願いします。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-10-01 04:47
私はメルマガの送信に利用していますが
BCC指定で100人単位で送信しています。

BCCの長さと件数に制約があると思いますが
この手法で解決できるのでは・・・

ただし、BCCで一括送信すると配信不能なメールアドレスを
メーリングリスト(データベーステーブル)から自動削除する
するときに問題があります。

一括送信した場合に、
メーリングリストから配信不能なメールアドレスを自動的にクリーンナップ
する方法がありましたら教えてください。



[ メッセージ編集済み 編集者: Dr ADO.NET 編集日時 2002-10-01 05:04 ]
tsuboyang
会議室デビュー日: 2002/09/30
投稿数: 6
投稿日時: 2002-10-01 10:26
あ、なるほど。
BCCで一括指定できるのですね。
試してみます。
ありがとうございます。

メーリングリストからの自動クリーンアップですか。。。
そこまで私は考えていなかったですね。
やはり、POPでメールを取りに行って、中身をみて、、、
なんてことをしてもエラーメールの形式は
メール配信プログラムによって様々ですから無理ですよね。

教えて頂きながらこちらからは何も協力できなくて申し訳ないです。
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2002-10-01 11:11
引用:

やはり、POPでメールを取りに行って、中身をみて、、、
なんてことをしてもエラーメールの形式は
メール配信プログラムによって様々ですから無理ですよね。



エラーメールの中身を見るのではなく、差出人のメールアドレスに
メールリングリストテーブル(データベーステーブル)のレコードID(会員ID)
を埋め込めば自動クリーンナップも可能なようです。
ぜひチャレンジしてみてください。

例:
mailMessage.From = "webmaster" + "recordID" + "@domain.com"

エラーメールを受信するときに、ワイルドカード指定でできることを
聞いたことがあります。

webmaster*@domain.com

エラーメールを受信したら、差出人のメールアドレスからレコードID
を取得してデータベースから削除(削除マークを付ける)します。
1

スキルアップ/キャリアアップ(JOB@IT)