いくつかのタイプの電子メールの説明を要約しました次の記事で救済策が与えられます。
同社のメールボックスは現在、Zimbraを使用しています。現在、再発行や漏れに問題があります。テスト後、100個のメールが約98個のセクションを正常に送信できます。
テストケース1:100シール、合計時間は約16分です。
テストケース2:100シール、合計時間は約16分に達し、2つはエラーが上記と同じでした。故障メカニズムを故障のために追加し、最大3回、故障後に10秒が再発行されるのを待ちます。
テストケース3:各セクションが10秒で、合計32分かかります。
MessagingExceptionの問題については、次のことを参照できます。
javax.mail.messagingException:SMTPホストに接続できませんでした
この種の問題に応じて、私はそれを再セントするために電子メールを追加しました、
if(sendhtmlmail_(mail){return true;} int i = 0; arternedexception e){logger.error( "relying mail error"、e);}} return true;}ただし、このメカニズムは、不安定な電子メールサーバーのために新しい問題を引き起こしました。電子メールと電子メールの一部によって。
上記の問題に応じて、再発行メカニズムを削除し、違法な電子メール(つまりサーバーに存在しないメールアドレス)に対してのみ削除し、削除後に送信します。他の理由によって引き起こされる障害の送信の電子メールは再発行されません(この問題は、メールサーバーの運用およびメンテナンス部門を通じてメーカーに報告されます)。
以下は、メールが合法かどうかを判断する論理です。
1。SMTPは2つのケースです。最初に、電子メールはクライアントからサーバーに送信されます。
2。SMTPは、コマンドと応答がASCIIテキストに基づいており、CRおよびLFシンボルで終了します。応答には、返品状態を表す3桁のコードが含まれます
3。TCP契約番号25でのSMTP、口の監視リクエスト
4。接続と送信プロセス
SMTPプロトコルは複雑でも複雑でもありません。ソケットを知っている場合は簡単です。しかし、これは、サーバーにメールを送信するときに、最初の記事で使用するものです。
5操作の手順は次のとおりです。
サーバーに接続されたポート25(メールサービスがない場合、白接続さえも)
heloの挨拶は、コマンドからメールを送信します。それは正しいものです。
RCPTをコマンドに送信します。
特定のコードは次のとおりです。
Import java.net。 string line = null;テキスト)shows ioexception {wr .write(text + "/r/n");} private static arrayList getMX(String HostName)Sthrows namingexcept = new Hashtable(); });;属性属性( "mx"); |。 namingexceptiを投げます(on(no no for name '" + hostname +"' "");} // huzzah! arraylist res = new arraylist(); ******************************************** ******************************************** ******************************************** ******************************************** *、(f [1] .ndswith( "。")mailhost = f [1] .substring(0、(f [1]。() - 1)); else mailhost = f [1]; // fix **************** Res.Add(Maylhost);} Return Res;} public Static Boolean isAddressValid(String Address){// Separtorを検索します。 indexof( '@'); XChangers string domain.substring(++ pos); //アドレスは値ですが、できない場合は、(mxlist.size()== 0)falseを返すことはありません。 // 1つのMXがすべてのMX [Exceのストアと転送者]、およびそれを拒否するための別のMXを取得しますOME // forを考慮に入れます); BufferedReader rdr = new BufferedR w outputStreamWriter(skt.getOutputStream()); rgagnon.com "); res = hear(rdr); if(res!= 250)新しい例外(" "not esmtp"); .com> "); res = hear(rdr); if(res!= 250)新しい例外をスロー(" sender ted "); res(rdr); 「アドレスは価値がありません!」 ;}最後に{if(valid)return true;}} public atic void main(string args []){string testdata [] = {"[email protected]"、 "[email protected]"、 "政府の住所" [email protected] "//この方法の障害}; ISADDRESSVALID(testData [ctr]);} return;}}上記は、メールアドレスが合法かどうかを判断する論理です。
Private Static String [] String [] String Mailfrom){arraylist = new ArrayList <String>(); )|| (); code = smpttrans.simplecommand(sendcmd); NormalAddress = normalizeddress(アドレス); } catch(messagingexception {logger.error( " + mailfrom、e); !上記は、この記事のすべての内容です。