背景:
メールアドレスは、数万を持つMSSQLユーザー情報テーブルに保存されています。
同社には独自のサーバーがあり、SMTP、POP3、WWW、FTP、MSSQL、DNS、その他のサービスを収集しています。
jmailにはmailmergeオブジェクトがありますが、無料版は使用できません
必要とする:
ASP Jmailを使用し、会社SMTPを使用してすべてのユーザーにメールを送信します
アイデア:
データベースを直接読み取り、複数のサイクルを何度も送信すると、構成が低いサーバーに大きな圧力がかかります。
バッチで電子メールに送信するのが最善です。また、サーバーへの圧力を軽減するために、間隔を送信する各バッチを一定期間送信することをお勧めします。
成し遂げる:
電子メールのバッチ
レコードを読んでレコードセットを使用して、すべてのレコードページを作成します。
遅れ
各ページの実行が完了した後、<Meta http-equiv = content = 60;
実行時間を短縮:
サイクル中、循環の代わりにレシピエントをサイクルに追加します。つまり、
i = 1からrs.pagesizeの場合
msg.addrecipient rs(電子メール)
rs.movenext
次
msg.send(smtp.abc.com)
メールサイズを削減します
サイクルに受信者を追加すると、多くのメール受信者が存在し、そのようなメールは非常に大きくなります。
したがって、上記のコードに基づいてそれを改善し、受信者の電子メールの数に到達したときにサイクルで判断を下します
20に一度送信します。今すぐ:
i = 1からrs.pagesizeの場合
msg.addrecipient rs(電子メール)
20 = 0をmodした場合、 '20人の債権者ごとに電子メールをメールとして送信します
msg.send(smtp.abc.com)
MSG.CLEARRRECIPIENTS '送信された送信者をクリアします
ifを終了します
rs.movenext
次
msg.send(smtp.abc.com) '残りのものを送信します
ページ
Mail.aspには、メールのテーマとテキストフォームが含まれています。
sendmail.aspには、バックグラウンド送信プログラム、サイクル、遅延ジャンプなどが含まれています。
欠点:
送信プロセス中、このページを離れることはできません
送信時間は長く、これは設定、ネットワーク帯域幅、SMTPサーバーのパフォーマンスの各バッチのパフォーマンスに関連しています
改善する:
Mail.aspに複数のiframeページを含めることができます。これは、マルチスレッド送信に相当します。
SMTPサーバーへの圧力は増加しますが、配信時間を短縮する可能性があります。
複数のiframeページを含むなど、異なるページで異なるSMTPサーバーを使用することを検討できます。
smtp.abc.com、奇数番号ページでsmtp.123.comを使用してください。これにより、サーバーの圧力が低下するだけでなく、マルチスレッドの送信も達成します
配達時間の目的を短くします。