プロが教える店舗&オフィスのセキュリティ対策術

Web系初心者です。
Win2003環境で、VB2005を使ってメール送信機能を実現しようとしています。
以下のサンプルのような作りで送信自体は問題無くできるようになりました。
求められているものは、数分から数十分の間に数百件から数万件の
それぞれ別のアドレス、別な内容のメールを送信したいのです。

以下のSendMail関数をループで回して、宛先と本文を引数に回そうと
考えていたのですが、”SMTPMail.Send(Mail)”で時間が掛かり過ぎて
います。
テストしてみると1件の送信に約6秒、50件に送信した場合、
開始から終了までに約6分ほどかかりました。

そこで質問です。
1.これをもっと早くしたいのですが、どのような方法がありますか?
 簡単に言えば、送信したい全てのアドレスと本文を設定した後に、
 ”SMTPMail.Send(Mail)”を1回コールして終わり。の様にできれ
 ばうれしいのですが。(それができるとして早くなるのかな?)
2.以下のプログラムでは無理な場合、他の方法はありますか?
3.どこかにサンプル的な物はありませんか?

---サンプル ここから---------
Function SendMail()
Dim SMTPMail As System.Web.Mail.SmtpMail
Dim Mail As New System.Web.Mail.MailMessage
SMTPMail.SmtpServer = "smtp.dummy.com"
Mail.From = "dummyaddr@dummy.com" '送信元アドレス
Mail.To = "sendaddr@dummy.com" '送信先アドレス
Mail.Subject = "Test" 'タイトル
Mail.BodyEncoding = System.Text.Encoding.UTF8 'メールの本文のエンコードタイプ指定
Mail.BodyFormat = System.Web.Mail.MailFormat.Text
'本文
Mail.Body = "メールのテスト送信" & vbCrLf _
& "こんにちは!" & vbCrLf _
& "おげんきですか?" & vbCrLf
'メールを送る
SMTPMail.Send(Mail)
End Function
---サンプル ここまで---------

A 回答 (2件)

サンプルの部分をスレッド化するというのはどうでしょうか?

    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
やはりスレッド化ですかね~。
ちょっとサンプル的にスレッド化にしてみて時間を計測してみます。
ありがとうございました。

お礼日時:2009/01/29 14:23

VBで使えるインターネットメール送受信コンポーネント


nMail.dll があります。
http://www.nanshiki.co.jp/lib/nmail.html

私はこれを使って、EXCELシートに、宛先、主題、本文ファイルへのパス、、添付ファイルへのパスを並べておいて、VBAで順次送信するように組みました。早いです。数100Kbのメールが100件ぐらいあっても1~2分ぐらいでした。

この手のプログラムは、自身でメールサーバーを起てないと場合、連続して送信しすぎるとSPAM行為と判断されますよ!!
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
nMail.dll ってよさそうですね。
ただ残念な事に業務プログラムのため社外の製品等は使えないのです。
勿論、迷惑メールを送信するシステムを構築する訳ではありません。(^^;
簡単に言えば 出退勤管理プログラムです。会社に入った時間、会社を出た時間にそれぞれのアドレスにメール送信するような物になります。

お礼日時:2009/01/29 14:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!