現在、Commons Emailを使用して電子メール メッセージを送信していますが、送信された電子メール間で smtp 接続を共有する方法を見つけることができませんでした。次のようなコードがあります。
Email email = new SimpleEmail();
email.setFrom("example@example.com");
email.addTo("example@example.com");
email.setSubject("Hello Example");
email.setMsg("Hello Example");
email.setSmtpPort(25);
email.setHostName("localhost");
email.send();
これは非常に読みやすいですが、大量のメッセージを処理すると遅くなります。これは、メッセージごとに再接続するオーバーヘッドだと思います。そのため、次のコードでプロファイリングしたところ、トランスポートを再利用すると約 3 倍高速になることがわかりました。
Properties props = new Properties();
props.setProperty("mail.transport.protocol", "smtp");
Session mailSession = Session.getDefaultInstance(props, null);
Transport transport = mailSession.getTransport("smtp");
transport.connect("localhost", 25, null, null);
MimeMessage message = new MimeMessage(mailSession);
message.setFrom(new InternetAddress("example@example.com"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress("example@example.com"));
message.setSubject("Hello Example");
message.setContent("Hello Example", "text/html; charset=ISO-8859-1");
transport.sendMessage(message, message.getAllRecipients());
Commons Email で複数の電子メール送信に SMTP 接続を再利用する方法があるかどうか疑問に思っていましたか? 私は Commons Email API の方が気に入っていますが、パフォーマンスはちょっと痛いです。
ありがとう、身代金