Hola usuario de nuestra página web, hemos encontrado la respuesta a tu búsqueda, desplázate y la verás más abajo.
Solución:
El siguiente código hace lo que quiere y lo hace de la manera correcta. Vuelva a leer lo que usted mismo publicó en el comentario.
De: RFC2821: 4.4 Información de rastreo
Cuando el servidor SMTP de entrega realiza la “entrega final” de un mensaje, inserta una línea de ruta de retorno al comienzo de los datos del correo. Este uso de return-path es obligatorio; los sistemas de correo DEBEN admitirlo. La línea de ruta de retorno conserva la información del comando MAIL. En este caso, la entrega final significa que el mensaje ha abandonado el entorno SMTP. Normalmente, esto significaría que se ha entregado al usuario de destino o a una entrega de correo asociada, pero en algunos casos puede ser procesado y transmitido por otro sistema de correo.
y unas líneas más adelante.
Un sistema SMTP que origina un mensaje NO DEBE enviar un mensaje que ya contenga un encabezado de ruta de retorno.
Si lee esto detenidamente, comprenderá que solo se supone que el agente de entrega/servidor smtp final debe agregar el Return-Path
encabezamiento. No es algo que usted como cliente (intentando enviar un correo) deba hacer. El servidor smtp final basará el Return-Path
encabezado en la dirección del remitente del sobre (SMTP MAIL FROM
parte).
Así que configurando mail.smtp.from
es la forma correcta de decirle a Java que la dirección del remitente del sobre debe ser diferente de la from
parte.
Si tiene problemas para entender cuáles son los diferentes from
son simplemente echar un vistazo a una sesión smtp de telnet. Donde [email protected]
debe corresponder a smtp.mail.from
y [email protected]
para m.addFrom(...);
telnet smtp.example.com 25
220 smtp.example.com ESMTP .....
helo computername
250 smtp.example.com Hello computername [123.123.123.123]
mail from:<[email protected]>
250 <[email protected]> is syntactically correct
rcpt to:<[email protected]>
250 <[email protected]> verified
data
354 Enter message, ending with "." on a line by itself
To: Joey <[email protected]>
From: Joey <[email protected]>
Subject: Joey
Hey Joey!
.
250 OK id=....
Quit
props.put("mail.smtp.from", "[email protected]");
Session session = Session.getDefaultInstance(props, null);
MimeMessage m = new MimeMessage(session);
m.addFrom(InternetAddress.parse("[email protected]"));
Experimenté el mismo problema y encontré la única solución discutida poniendo la propiedad “mail.smtp.from” props.put (“mail.smtp.from”, “[email protected]”);
Aún así, esta solución no era adecuada para mí porque estoy enviando muchos correos electrónicos de diferentes usuarios, por lo que volver a crear una sesión para cada correo electrónico sería horrible para la productividad.
Entonces encontré otra solución después de leer las fuentes de JavaMail:
1) Use SMTPMessage (extiende MimeMessage) en lugar de MimeMessage.
2) Utilice el método setEnvelopeFrom(String).
3) Use SMTPTransport para enviar correo electrónico (no lo intenté con otros).
Aquí hay un ejemplo de código:
SMTPMessage message = new SMTPMessage(session);
message.setEnvelopeFrom("[email protected]");
...
transport.sendMessage(message, message.getAllRecipients());
Reseñas y valoraciones
Finalizando este artículo puedes encontrar las anotaciones de otros desarrolladores, tú asimismo tienes la libertad de insertar el tuyo si te apetece.