2012-06-26 19 views
27

Estoy intentando enviar correo a mis amigos a través de mi aplicación Java Mail. Puedo hacerlo con éxito, sin embargo, la columna del destinatario en el buzón muestra la dirección de correo electrónico completa en lugar del nombre del remitente. Intenté cambiar varios parámetros, pero el buzón mostraría la dirección de correo electrónico completa en lugar del nombre del remitente.La dirección del remitente de correo Java se muestra en lugar de su nombre

utilizando este método para enviar el mensaje:

public void send(String key){ 
    String to=key; 
    String from="mygmailid"; 
    String subject="wassp"; 
    String text="Hello"; 
    Properties props=new Properties(); 

    props.put("mail.smtp.host", "smtp.gmail.com"); 
    props.put("mail.smtp.user", "myname"); 
    props.put("mail.smtp.socketFactory.port", "465"); 
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.port", "465"); 
    Session mailSession=Session.getDefaultInstance(props); 
    Message simpleMessage=new MimeMessage(mailSession); 

    InternetAddress fromAddress=null; 
    InternetAddress toAddress=null; 

    try{ 
     fromAddress=new InternetAddress(from); 
     toAddress=new InternetAddress(to); 
    } 
    catch(AddressException e){ 
     e.printStackTrace(); 
    } 

    try{ 
     simpleMessage.setFrom(fromAddress); 
     simpleMessage.setRecipient(RecipientType.TO,toAddress); 
     simpleMessage.setSubject(subject); 
     simpleMessage.setText(text); 

     transport.connect("smtp.gmail.com",465, "[email protected]", "mygmailpassword"); 
     transport.sendMessage(simpleMessage, simpleMessage.getAllRecipients()); 
     transport.close(); 

    } 
    catch(MessagingException e){ 
     e.printStackTrace(); 
    } 
} 

Estoy llamando a este método como:

public static void main(String[] args) { 
    MailSender mailer=new MailSender(); 
    mailer.send("[email protected]"); 
} 

Respuesta

69

Puede establecer un nombre en el InternetAddress usando

new InternetAddress("[email protected]", "Your Name"); 
3

cómo se muestra el campo es un detalle de implementación específica del cliente.

Normalmente, si el remitente tiene el formato "Sender Name" <[email protected]>, el cliente hará lo correcto según la configuración.

Algunos clientes deducirán la información del nombre de la información de su libreta de direcciones si falta.

21

Debe usar el two string constructor of InternetAddress para pasar tanto la dirección de correo electrónico como el nombre de la persona. El correo electrónico resultante contendrá una cadena como Jarrod indicó.

InternetAddress fromAddress=new InternetAddress("[email protected]", "John Doe"); 
0

probar este código dentro del método de tratar block.You puede inicializar su nombre dentro de la setFrom() de MimeMessage.

simpleMessage.setFrom(new InternetAddress("Your mail id", "Your name")); 

es decir,

try{ 
    simpleMessage.setFrom(new InternetAddress("Your mail id", "Your name")); 
    simpleMessage.setRecipient(RecipientType.TO,toAddress); 
    simpleMessage.setSubject(subject); 
    simpleMessage.setText(text); 

    transport.connect("smtp.gmail.com",465, "[email protected]", "mygmailpassword"); 
    transport.sendMessage(simpleMessage, simpleMessage.getAllRecipients()); 
    transport.close(); 

} 
+0

Si bien esto puede teóricamente responder a la pregunta, no es realmente una buena respuesta, ya que no enseña el OP. En cambio, ofrece una solución alternativa sin explicación. Esto generalmente llevará a que OP no aprenda, y que vuelva para hacer una nueva pregunta cuando ocurre un problema similar. ¿Te importaría agregar alguna explicación? – Vogel612

1

las respuestas anteriores son correctas, pero me pareció que tenía que colocar en un intento de captura para que funcione, esto es lo que encontré hecha de aplicación de demostración sendemailwebapp.

Mensaje msg = new MimeMessage (sesión);

try { 
     msg.setFrom(new InternetAddress(userName, "YourName")); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    InternetAddress[] toAddresses = { new InternetAddress(toAddress) }; 
    msg.setRecipients(Message.RecipientType.TO, toAddresses); 
    msg.setSubject(subject); 
    msg.setSentDate(new Date()); 
    msg.setText(message); 
3
try { 

     String from = " EMAIL ID"; 
     String SMTP_AUTH_PWD = " PASSWORD "; 
     Properties props = new Properties(); 
     props.put("mail.smtp.host", "smtp.gmail.com"); 
     props.put("mail.smtp.starttls.enable", "true"); 
     props.put("mail.transport.protocol", "smtps"); 
     props.put("mail.smtps.auth", "true"); 
     String SMTP_HOST_NAME = "smtp.gmail.com"; 
     int SMTP_HOST_PORT = 465; 
     javax.mail.Session mailSession = Session.getDefaultInstance(props); 

     mailSession.setDebug(true); 
     Transport transport = ((javax.mail.Session) mailSession) 
       .getTransport(); 

     javax.mail.Message message = new MimeMessage(mailSession); 
     message.setSubject("Testing SMTP-SSL"); 
     message.setContent("", "text/plain"); 
     message.addRecipient(javax.mail.Message.RecipientType.TO, 
       new InternetAddress(receiver)); 
     transport.connect(SMTP_HOST_NAME, SMTP_HOST_PORT, from, 
       SMTP_AUTH_PWD); 
     message.setFrom(new InternetAddress(from," YOUR PREFERED NAME ")); 
     message.setSubject(subject); 
     BodyPart messageBodyPart = new MimeBodyPart(); 
     messageBodyPart.setText(body); 
     Multipart multipart = new MimeMultipart(); 
     multipart.addBodyPart(messageBodyPart); 
     messageBodyPart = new MimeBodyPart(); 
     message.setContent(multipart); 

     transport.sendMessage(message, 
       message.getRecipients(javax.mail.Message.RecipientType.TO)); 

    } 
Cuestiones relacionadas