Configuración del campo de encabezado "desde" en Java Mimemessage no funciona correctamente

StackOverflow https://stackoverflow.com//questions/23022600

  •  21-12-2019
  •  | 
  •  

Pregunta

Para una aplicación web en la que estoy trabajando en Hice un método para enviar notificaciones por correo electrónico.El mensaje tiene que provenir de una cuenta específica, pero me gustaría el campo de encabezado "de" para que lea como una dirección de correo electrónico completamente diferente.Aquí está mi código (he cambiado las direcciones de correo electrónico reales a los falsos):

public static boolean sendEmail(List<String> recipients, String subject, String content){
    String header = "This is an automated message:<br />"+"<br />";
    String footer = "<br /><br />unsubscribe link here";
    content = header + content + footer;

    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");

    Session session = Session.getInstance(props,
      new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            //This is where the email account name and password are set and can be changed
            return new PasswordAuthentication("ACTUAL.ADRESS@gmail.com", "PASSWORD");
        }
      });
    try{
         MimeMessage message = new MimeMessage(session);
         try {
            message.setFrom(new InternetAddress("FAKE.ADDRESS@gmail.com", "FAKE NAME"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
         message.setReplyTo(new Address[]{new InternetAddress("no-reply@gmail.com")});
         for(String recipient: recipients){
             message.addRecipient(Message.RecipientType.BCC,new InternetAddress(recipient));
         }
         message.setSubject(subject);
         message.setContent(content,"text/html");
         Transport.send(message);
         return true;
      }catch (MessagingException mex) {
         mex.printStackTrace();
         return false;
      }
}

Para el método anterior, enviar un correo electrónico con él tendrá el siguiente encabezado de correo electrónico:

from:    FAKE NAME <ACTUAL.ADRESS@gmail.com>

quiero que lea:

from:    FAKE NAME <FAKE.ADRESS@gmail.com>

¿Qué estoy haciendo mal?¡Cualquier ayuda es apreciada!

¿Fue útil?

Solución

Lo que buscas hacer es llamado "SPOOFING".Aparece, como si estuviera utilizando los servidores SMTP de Google, si este es el caso, no podrá hacerlo correctamente.Para fines de seguridad, Google solo permitirá que la dirección "de" sea la dirección de correo electrónico autenticada.

Vea esta pregunta relacionada

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top