В настоящее время я использую 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();
, который очень читабелен, но медленный, когда я делаю большое количество сообщений, которые, как я полагаю, являются издержками на повторное подключение для каждого сообщения.Итак, я профилировал его с помощью следующего кода и обнаружил, что использование повторного использования транспорта делает вещи примерно в три раза быстрее.
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-соединениедля нескольких почтовых отправлений?Мне больше нравится API электронной почты Commons, но производительность довольно болезненная.
Спасибо, выкуп