Java邮件,设置回复地址无效

18

我用Java编写了一个小型的电子邮件发送程序,它有fromtoreply-to地址,在客户端尝试回复邮件时,应该能够回复到reply-to地址。 目前它不起作用,我的代码如下:

// 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 = "xyz@gmail.com";

      // Sender's email ID needs to be mentioned
      String from = "abcd@gmail.com";

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

      // Get system properties
      Properties properties = System.getProperties();
    properties.put("mail.smtp.from", "mnop@gmail.com");

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

我使用了真实的 Gmail 帐户。有人能帮忙吗..?


3
看起来你的代码没有尝试设置回复地址。 - Jolta
设置 mail.smtp.from 怎么样? - user1133832
2个回答

41

尝试:

MimeMessage message = new MimeMessage(session);
message.setReplyTo(new javax.mail.Address[]
{
    new javax.mail.internet.InternetAddress("mnop@gmail.com")
});

29

Message.setReplyTo()是什么?

请注意:

  • "from"并不等同于"reply to"
  • 根据规范,from-address的属性为"mail.from"
  • getDefaultInstance的文档说明只有在不存在默认实例且创建新实例时才使用属性。而且默认实例是全局值,并且会被重复使用,所以除非您希望所有电子邮件都具有相同的"from"-address,否则需要创建新的会话(使用getInstance())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接