¿Cómo establecer la ruta de retorno a una dirección de correo electrónico diferente a la dirección del remitente utilizando JavaMail?¿Cómo establecer la ruta de retorno a una dirección de correo electrónico diferente a la dirección del remitente utilizando JavaMail?
Respuesta
El siguiente código hace lo que quiere, y lo hace de la manera correcta. Vuelva a leer lo que usted mismo ha escrito en el comentario
Desde: RFC2821: 4.4 Trace Information
Cuando el servidor SMTP entrega realiza la "entrega final" de un mensaje, se inserta una línea de ruta de retorno en el comienzo de los datos del correo. Se requiere este uso de ruta de retorno; Los sistemas de correo DEBEN respaldarlo. La línea de ruta de retorno conserva la información en del comando MAIL. Aquí, la entrega final significa que el mensaje ha dejado el entorno SMTP. Normalmente, esto significa que se entregó a el usuario de destino o un correo asociado , pero en algunos casos puede ser más procesado y transmitido por otro sistema de correo.
y unas líneas más adelante.
Un sistema SMTP mensaje originario no debe enviar un mensaje que ya contiene un cabezal de retorno de la ruta.
Si lee este documento con atención, comprenderá que solo se supone que el agente de entrega/servidor smtp final debe agregar el encabezado Return-Path
. No es algo que usted como cliente (tratando de enviar un correo) debería hacer. El servidor smtp final basará el encabezado Return-Path
en la dirección del remitente del sobre (SMTP MAIL FROM
parte).
Así que la configuración mail.smtp.from
es la forma correcta de decirle a java que la dirección del remitente del sobre debe ser diferente de la parte from
.
Si tiene problemas para entender cuáles son los diferentes from
, simplemente eche un vistazo a una sesión smtp de telnet. Donde [email protected]
debe corresponder a smtp.mail.from
y [email protected]
a 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]"));
que he experimentado el mismo tema y encontré la única solución discutida poniendo propiedad props.put "mail.smtp.from" (" mail.smtp.from "," [email protected] ");
Todavía esta solución no era adecuada para mí porque estoy enviando muchos correos electrónicos de diferentes usuarios, por lo que recrear la sesión para cada correo electrónico sería horrible para la prodictividad.
así que encontré otra solución después de leer las fuentes JavaMail:
1) Uso SMTPMessage (se extiende MimeMessage) en lugar de MimeMessage.
2) Use el método setEnvelopeFrom (String).
3) Use SMTPTransport para enviar correos electrónicos (no lo intenté con otros).
Aquí es un ejemplo de código:
SMTPMessage message = new SMTPMessage(session);
message.setEnvelopeFrom("[email protected]");
...
transport.sendMessage(message, message.getAllRecipients());
- 1. correos electrónicos, una diferente 'responder a' una dirección distinta de la dirección del remitente
- 2. cómo cambiar la dirección de correo electrónico predeterminada para postfix?
- 3. ¿Cómo puedo obtener la dirección de correo electrónico
- 4. ¿Cómo verificar la dirección del remitente del correo electrónico no se ha falsificado?
- 5. ¿Cómo puedo falsificar la dirección IP del remitente utilizando curl?
- 6. Outlook 2007 vsto complemento. Obtener la dirección del remitente de correo electrónico
- 7. Acceder a contactos y obtener la dirección de correo electrónico
- 8. ¿Cómo puedo configurar la dirección del remitente en Jenkins?
- 9. dirección de correo electrónico noreply.
- 10. Posibles problemas utilizando la dirección "de" del miembro y el encabezado "remitente"
- 11. Cómo verificar que realmente exista una dirección de correo electrónico enviando un correo electrónico a java
- 12. postfix: envíe una copia de cada correo electrónico a una dirección de correo electrónico dada
- 13. claves Gitosis y ssh: ¿la dirección de correo electrónico tiene algo que ver con la dirección de correo electrónico git?
- 14. Cómo enviar un correo electrónico utilizando Microsoft.Office.Interop.Outlook.MailItem especificando la dirección de origen
- 15. ¿Cómo puedo mayúsculas una dirección de correo electrónico?
- 16. Cómo copiar la dirección de correo electrónico en outlook 2007
- 17. Envío de correo electrónico utilizando la dirección IP en lugar del nombre de dominio
- 18. Drupal recibe una dirección de correo electrónico amplia del sitio?
- 19. La dirección del remitente de correo Java se muestra en lugar de su nombre
- 20. ¿Es posible configurar una dirección de respuesta diferente de la dirección en el complemento de correo de grails?
- 21. anfitrión Finding SMTP y el puerto conocer la dirección de correo electrónico utilizando JAVA API
- 22. Html.La etiqueta para mostrar la dirección de correo electrónico
- 23. django-registration no puede establecer la dirección de correo electrónico "de" para el correo electrónico de autenticación
- 24. ¿Expresión válida de la dirección de correo electrónico?
- 25. Ocultando la dirección de correo electrónico con jQuery
- 26. La construcción de un servicio de correo electrónico del remitente
- 27. validar la dirección de correo electrónico utilizando expresiones regulares en la página de afeitar
- 28. PHP buscar una cadena para una dirección de correo electrónico
- 29. Establecer la dirección IP utilizando SIOCSIFADDR ioctl
- 30. phpmailer: Responder utilizando solo la dirección "Responder a"
creo que sería la solución. Pero por lo que leo, el servidor de correo debe soportarlo. "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 la ruta de retorno es obligatorio; los sistemas de correo DEBEN respaldarlo. la línea de ruta conserva la información en del comando MAIL. " en http://www.ietf.org/rfc/rfc2821.txt –
Ricardo
Revise la respuesta expandida – jitter
He intentado hacer esto en muchos otros niveles del código, esta es la única solución que me ha funcionado – kommradHomer