2012-01-19 30 views
12

Tôi đã viết một chương trình gửi email nhỏ bằng java, nó có địa chỉ from, toreply-to, khi khách hàng cố gắng trả lời thư, nó sẽ có thể trả lời reply-to địa chỉ. Hiện tại, mã không hoạt động, mã của tôi dưới đây:Thư Java, đặt địa chỉ trả lời không hoạt động

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

Tôi đã sử dụng tài khoản gmail thực. Có ai giúp được không..?

+1

Có vẻ như mã của bạn đang cố gắng đặt địa chỉ trả lời. – Jolta

+0

Điều gì về việc đặt 'mail.smtp.from' ...? –

Trả lời

22

Message.setReplyTo()?

Xin lưu ý rằng:

  • "từ" không giống như "trả lời"
  • theo spec, tài sản cho địa chỉ từ là "mail.from"
  • sự tài liệu hướng dẫn cho getDefaultInstance chỉ định rằng điều này chỉ tạo ra một cá thể mới nếu không có một cá thể mặc định hiện có và các thuộc tính chỉ được sử dụng khi tạo một cá thể mới. Hơn nữa, trường hợp mặc định là giá trị toàn cầu và sẽ được sử dụng lại, vì vậy, trừ khi bạn muốn cùng một từ "-address" trên tất cả email của mình, bạn cần phải tạo phiên mới (sử dụng getInstance())
26

Hãy thử:

MimeMessage message = new MimeMessage(session); 
message.setReplyTo(new javax.mail.Address[] 
{ 
    new javax.mail.internet.InternetAddress("[email protected]") 
}); 
Các vấn đề liên quan