質問

私が長年書いてきたマスメーラーコンポーネントに問題があり、難易度の正確な性質、その測定方法、および軽減方法はすべてとらえどころのないままでした。

これらの問題が重大になりつつあるので、ここで誰かがそれらを提供できることを望んでいます。

基本的に、この大量メーラーウィジェットは、メールリストに一度に1通ずつ、約25k通のメールを送信します。これは、各受信者が自分宛のメールを受信することを意味するため、私たちの非常に好まれるメッセージです。そのループに満足しています。

不満なのは、約6,000通のメールを処理した後にプログラムを終了した場合、「最大セッションサイズ」というエラーが表示されることです。に到達し、それ以上メールを送信しません。

現在どのメールに到達したかを知る本当の方法はありません。スロットリングの唯一の方法は推測作業に基づいており、手動のボタンを押すことで90秒ごとに1kメールを送信します。

電子メールが送信される際の追跡方法、セッションサイズの測定方法、またはプロセスをボタンを1回押すだけでウィジェットができるようにするための方法を示すために頭が痛くなるまで検索しました自己調整しますが、誰もオンラインでそれについて話すことを望んでいないようです。

関連するクエリに対して、ウィジェットを完全に作り直したり、特注の大量メール送信アプリを作成したりすることを提案するいくつかの提案がありました。

最終的には、エラーを発生させないように送信メールを調整するか、これが避けられない場合は、送信されたメールをカウントし、どこでピックアップするのかを教えてくださいエラーを適切に処理します。何か。なんでも。

.Net 2.0で生成された電子メールを発信元サーバーから追跡するための現実的な提案や実用的な提案はありますか?

役に立ちましたか?

解決

セッションが成長しているのはなぜですか?リクエストの有効期間内にこれを行っていますか?

あなたが「追跡」していると仮定しています;セッション状態内で送信されたメールに関する情報を保持します。ディスクまたはsqlデータベース上のxmlファイルなどの外部ストレージに追跡情報をバッチ書き込みできるトラッカーを作成します。

追跡部分が問題の原因ではなく、一度に1通の電子メール(またはそれらを送信するウィジェット)である場合、一度に1つずつ送信するのではなく、電子メールのバッチ処理とBCCを試みることができます。ブラインドカーボンコピーは常に個人宛てであり、受信者に大量に送信されたことを明らかにしません。 BCC経由で送信できるメールの数の制限を把握する必要があります。

3番目のオプションは、Webアプリで、これらの電子メールを生成するために必要なものを共通の保管場所にドロップし、新しい電子メールジョブを定期的にチェックして外部で処理するWindowsサービスアプリ(またはスケジュールタスクアプリ)を使用することですWebアプリの...多分あなたのWebアプリのホストサーバーの外でも。もちろん、この種のことは共有ホスティングサーバーでは機能しません...

他のヒント

ほぼ同じことを行いますが、1分間に500件のメールを一度に送信します。最初の500件が送信された後、ページがリロードされ、次の500件でジョブが続行されます。

これは、500の現在のキューに関する情報を少しログに記録して保存し、タイムアウト、早期のリロードなどを可能にしますが、2、3日間は機能しています(おそらく、1晩に10,000件程度のメールを送信します)年。

ASP.NETを使用して1行のコードを書き込むことはなかったので、コーディングエリアを支援することはできませんが、できることは、エラーを指摘することです。私は、SMTPプロトコルについての高度な理解があり、SMTPサーバーを実行した経験があります。SMTPサーバーは、1日あたり平均で約100万の個別の電子メールです。

「最大セッションサイズ」というエラーメッセージ混乱の実際の理由です。このエラーでさえ、実際の問題の「サイズ」は「数値」であり、電子メールサーバーが受け入れるには非常に大きな数値であると明確に述べています。セキュリティ上の理由から、個々の電子メール番号、最終受信者番号などのさまざまな要素を制限するように構成されたすべての電子メール(SMTP)サーバー。誰かが1MBの電子メールを1000人の受信者に送信しようとしますが、ユーザーはホストエンドから約1MBのデータをSMTPサーバーに転送するだけで、サーバー自体はこれらすべての電子メールに正常に配信するために1GBのデータを転送する必要があります。すべてのメールを返送する場合の2GBを超えるデータ。メールリレーサーバーへのこのタイプの攻撃を保護するために、SMTPデーモンは何らかの制限を設定しました。あなたの場合、スクリプトは一度SMTPサーバーに接続し、切断することなく何千もの電子メールのリレーを開始します。サーバーは実際には、ASP.NETプログラムから送信したり、数が制限を超えたときに制限したり拒否したりする他の電子メールクライアントからの送信を気にしません。

個々の電子メールを生成するための「ループ」について説明したように、500個の電子メールリレーが行われるたびにSMTPに切断して接続する別のループを設定するだけです。何らかのサイズ制限を超えたためではなく、SMTPサーバーがユーザーを拒否しましたが、1つの接続から許可された最大の電子メールリレーに達したことに注意してください。接続し、固定数の電子メールを中継し、切断し、再度接続して次のメールバッチを送信し、配信する必要のあるすべてのメールの中継が完了するまでループします。

Happy Emailing(Not SPAM)....

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top