Actualmente estoy usando Commons Email para enviar mensajes de correo electrónico, pero no he podido encontrar la manera de compartir las conexiones smtp entre los correos electrónicos enviados. Tengo un código como el siguiente:Apache Commons Correo electrónico y reutilización de conexiones SMTP
Email email = new SimpleEmail();
email.setFrom("[email protected]");
email.addTo("[email protected]");
email.setSubject("Hello Example");
email.setMsg("Hello Example");
email.setSmtpPort(25);
email.setHostName("localhost");
email.send();
que es muy fácil de leer, pero es lento cuando hago una gran cantidad de mensajes, que creo que es la sobrecarga de volver a conectar para cada mensaje. Así que lo perfilé con el siguiente código y descubrí que el uso de la reutilización de Transport hace que las cosas sean tres veces más rápidas.
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("[email protected]"));
message.addRecipient(Message.RecipientType.TO, new InternetAddress("[email protected]"));
message.setSubject("Hello Example");
message.setContent("Hello Example", "text/html; charset=ISO-8859-1");
transport.sendMessage(message, message.getAllRecipients());
Entonces, me preguntaba si habría alguna forma de hacer que Commons Email reutilice una conexión SMTP para enviar múltiples correos electrónicos. Me gusta más la API de correo electrónico de Commons, pero el rendimiento es un poco doloroso.
Gracias, Ransom