Java почта, установить адрес для ответа не работает - PullRequest
14 голосов
/ 19 января 2012

Я написал небольшую программу для отправки электронной почты в java, она имеет адрес from, to и reply-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.Кто-нибудь может помочь ..?

Ответы [ 2 ]

31 голосов
/ 17 ноября 2012

Попробуйте:

MimeMessage message = new MimeMessage(session);
message.setReplyTo(new javax.mail.Address[]
{
    new javax.mail.internet.InternetAddress("mnop@gmail.com")
});
26 голосов
/ 19 января 2012

Message.setReplyTo ()

Обратите внимание, что:

  • «от» не совпадает с «ответить на»
  • в соответствии со спецификацией , свойство from-address имеет значение "mail.from"
  • документация для getDefaultInstance указывает, что это создает новый экземпляр, только если не существует существующего экземпляра по умолчанию, а свойства используются только при создании нового экземпляра. Кроме того, экземпляр по умолчанию является глобальным значением и будет использоваться повторно, поэтому, если вам не нужен одинаковый адрес «from» для всей вашей электронной почты, вам нужно создавать новые сеансы (используя getInstance ())
...