2012-01-19 24 views
12

Napisałem mały program do wysyłania wiadomości e-mail w języku Java, ma on adres from, to i reply-to, gdy klient próbuje odpowiedzieć na wiadomość, powinien być w stanie odpowiedzieć reply-to adres. Obecnie nie pracuje, mój kod jest poniżej:Poczta Java, ustaw adres zwrotny nie działa

// 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(); 
     } 
    } 
} 

użyłem prawdziwych kont Gmail. Czy ktoś może pomóc ...?

+1

Wygląda na to, że Twój kod nie próbuje ustawić adresu zwrotnego. – Jolta

+0

Co z ustawieniem 'mail.smtp.from' ...? –

Odpowiedz

22

Message.setReplyTo()?

Uwaga:

  • "od" nie jest taka sama jak "odpowiedzieć"
  • według spec, nieruchomość na od-address jest "mail.from"
  • dokumentacja dla getDefaultInstance określa, że ​​tworzy to tylko nowe wystąpienie, jeśli nie istnieje istniejąca instancja domyślna, a właściwości są używane tylko podczas tworzenia nowej instancji. Ponadto domyślna instancja jest wartością globalną i zostanie ponownie wykorzystana, więc jeśli nie chcesz tego samego "od" -adresu na wszystkich wiadomościach e-mail, musisz utworzyć nowe sesje (używając getInstance())
26

Wypróbuj:

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