Saltar al contenido

¿Cómo configurar Return-Path en una dirección de correo electrónico que no sea la dirección del remitente usando JavaMail?

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 fromson 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *