Impostazione del campo di intestazione "da" in Java Mimemessage non funziona correttamente

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

  •  21-12-2019
  •  | 
  •  

Domanda

Per un'applicazione web sto lavorando su Ho fatto un metodo per inviare notifiche e-mail.Il messaggio deve provenire da un account specifico, ma vorrei che il campo di intestazione "da" da leggere come un indirizzo email interamente diverso.Ecco il mio codice (ho cambiato gli indirizzi effettivi e-mail a quelli falsi):

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;
      }
}
.

Per il metodo di cui sopra inviando un'e-mail con esso avrà la seguente intestazione di posta elettronica:

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

Voglio che leggi:

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

Cosa sto facendo male?Qualsiasi aiuto è apprezzato!

È stato utile?

Soluzione

Quello che stai cercando di fare è chiamato "spoofing".Appare come se stessi utilizzando i server SMTP di Google, se questo è il caso, non sarai in grado di farlo con successo.Per scopi di sicurezza, Google consentirà solo l'indirizzo "da" di essere l'indirizzo email autenticato.

Vedi questa domanda correlata

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top