|
ありがとうございます。
もちろん、違法メール業者の存在も承知の上ですが、 一応、エンドユーザはちゃんとした企業で、そのメルマガを配信する機能です。
いくらネットワークの帯域が大きくても、サーバが一気に受け入れられなければ、 アプリ側で非同期にレスポンスを待たずに実行しても、サーバ側がパンクしてしまうでしょうし。
現在、このようにセッションを確立して投げても、30分で1万件程度です。 これにはもちろん、メールサーバ側の1日の最大送信件数、及びサーバ機性能の 条件の上だという事は承知していますが、Java側(アプリ)でパフォーマンスアップの 手法が他に無いか確認したく、思いました。
現在でも、PC6GB搭載の開発機でメモリ70%占有しておりますが、、、
よろしくお願いします。
try{ Properties props = new Properties(); props.put("mail.smtp.host", m_smtp); props.put("mail.smtp.auth", "true"); Session session = Session.getInstance(props, new myAuth());
MimeMessage mime = new MimeMessage(session); InternetAddress[] addressTo = new InternetAddress[1]; InternetAddress fromAddress = new InternetAddress(m_adrs,MimeUtility.encodeWord(m_name,"iso-2022-jp","B")); mime.setFrom(fromAddress); mime.setHeader("Content-Transfer-Encoding","7bit"); mime.setSubject(MimeUtility.encodeText(title,"iso-2022-jp","B")); mime.setContent(honbun,"text/plain; charset=iso-2022-jp"); mime.setSentDate(new Date()); Transport transport = session.getTransport("smtp"); transport.connect(); for (int i = 0; i < alist.size(); i++) { String ml = alist.get(i); try { if (ken != 0 && i != 0 && (i % ken == 0)) { log.info(" "+(i+1)+"件目 "+(mate / 1000)+"秒待機します"); Thread.sleep(mate); } // メール送信 addressTo[0] = new InternetAddress(ml); mime.setRecipients(MimeMessage.RecipientType.TO,addressTo); transport.send(mime,addressTo); } catch (Exception e) { log.error(" 送信失敗:"+ml); } } transport.close(); } catch (Exception e) { log.error("予期せぬエラー:"+e.getMessage()); e.printStackTrace(); }
|