2012-01-19 5 views
12

Ho scritto un piccolo programma di invio di posta elettronica in java, ha from, to e reply-to indirizzo, quando il client tenta di rispondere alla posta, dovrebbe essere in grado di rispondere al reply-to indirizzo. Attualmente non funziona, il mio codice è qui sotto:Java mail, impostare l'indirizzo di risposta non funzionante

// File Name SendEmail.java 

import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 
import javax.activation.*; 

public class SendEmail 
{ 
    public static void main(String [] args) 
    { 

     // Recipient's email ID needs to be mentioned. 
     String to = "[email protected]"; 

     // Sender's email ID needs to be mentioned 
     String from = "[email protected]"; 

     // Assuming you are sending email from localhost 
     String host = "localhost"; 

     // Get system properties 
     Properties properties = System.getProperties(); 
    properties.put("mail.smtp.from", "[email protected]"); 

     // Setup mail server 
     properties.setProperty("mail.smtp.host", host); 

     // Get the default Session object. 
     Session session = Session.getDefaultInstance(properties); 

     try{ 
     // Create a default MimeMessage object. 
     MimeMessage message = new MimeMessage(session); 

     // Set From: header field of the header. 
     message.setFrom(new InternetAddress(from)); 

     // Set To: header field of the header. 
     message.addRecipient(Message.RecipientType.TO, 
            new InternetAddress(to)); 

     // Set Subject: header field 
     message.setSubject("This is the Subject Line!"); 

     // Now set the actual message 
     message.setText("New Message goes here"); 

     // Send message 
     Transport.send(message); 
     System.out.println("Sent message successfully...."); 
     }catch (MessagingException mex) { 
     mex.printStackTrace(); 
     } 
    } 
} 

ho usato account Gmail reali. Qualcuno può aiutare ..?

+1

Non sembra che il codice stia tentando di impostare l'indirizzo di risposta. – Jolta

+0

Che ne dici di impostare 'mail.smtp.from' ...? –

risposta

22

Message.setReplyTo()?

prega di notare che:

  • "da" non è lo stesso di "rispondere a"
  • secondo il spec, la proprietà dal-address è "mail.from"
  • la la documentazione per getDefaultInstance specifica che questo crea solo una nuova istanza se non esiste un'istanza predefinita esistente e le proprietà vengono utilizzate solo durante la creazione di una nuova istanza. Inoltre, l'istanza predefinita è un valore globale e verrà riutilizzata, quindi, a meno che tu non voglia lo stesso indirizzo "da" su tutte le tue email, devi creare nuove sessioni (utilizzando getInstance())
26

Prova:

MimeMessage message = new MimeMessage(session); 
message.setReplyTo(new javax.mail.Address[] 
{ 
    new javax.mail.internet.InternetAddress("[email protected]") 
});