Estoy revisando el código que no escribí que usa JavaMail, y tengo problemas para entender por qué la API JavaMail está diseñada tal como está. Tengo la sensación de que, si lo entendiera, podría estar haciendo un mejor trabajo.¿Por qué JavaMail Transport.send() es un método estático?
Nos llaman:
transport = session.getTransport("smtp");
transport.connect(hostName, port, user, password);
Entonces ¿por qué me está advirtiendo que este Eclipse:
transport.send(message, message.getAllRecipients());
es una llamada a un método estático?
¿Por qué obtengo un objeto Transporte y proporciono configuraciones que son específicas si no puedo usar ese objeto para enviar el mensaje? ¿Cómo sabe la clase Transport qué servidor y qué otras configuraciones usar para enviar el mensaje? Está funcionando bien, lo cual es difícil de creer. ¿Qué pasaría si hubiera instanciado objetos de transporte para dos servidores diferentes? ¿Cómo sabría cuál usar?
En el curso de escribir esta pregunta, he descubierto que realmente debería estar llamando a:
transport.sendMessage(message, message.getAllRecipients());
Entonces, ¿cuál es el propósito del método estático Transport.send()? ¿Es este un diseño pobre, o hay una razón por la cual es así?