javax.mail:无法将命令发送到SMTP主机

时间:2019-01-28 11:59:11

标签: java javamail

我是Java Mail的新手。当我执行以下代码时,出现了

之类的异常。
  

javax.mail.MessagingException:无法将命令发送到SMTP主机

public void sendMessage(EmailMessage emailMessage) throws MessagingException {

    Properties props = new Properties();
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.port", "587");

    System.out.println(emailMessage.getFromAddress());
    Optional<EmailId> emailIdOptional = emailIdRepository.findByEmailId(emailMessage.getFromAddress());
    System.out.println(emailIdOptional.get().getEmailId());

    Session session = Session.getInstance(props, new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(emailIdOptional.get().getEmailId(), emailIdOptional.get().getPassword());
        }
    });
    javax.mail.Message msg = new MimeMessage(session);
    msg.setFrom(new InternetAddress(emailMessage.getFromAddress(), false));

    msg.setRecipients(javax.mail.Message.RecipientType.TO, InternetAddress.parse(emailMessage.getToAddress()));
    msg.setSubject(emailMessage.getSubject());
    msg.setContent(emailMessage.getMessage(), "text/html");
    msg.setSentDate(new Date());

    MimeBodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setContent(emailMessage.getMessage(), "text/html");

    Transport.send(msg);
}

任何人都可以帮助我解决此问题。

2 个答案:

答案 0 :(得分:1)

String host = "smtp.xyz.com";
final String username = "xyz@business.com";
final String password = "your password";

Properties props = new Properties();

props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
// go to account setting -> smtp setting and get server name and port
props.put("mail.smtp.host", "your server name");
props.put("mail.smtp.port", "your server port");
props.put("mail.debug", "true");

try {
    Session session = Session.getInstance(prop,
            new javax.mail.Authenticator() {
                protected javax.mail.PasswordAuthentication getPasswordAuthentication() {
                    return new javax.mail.PasswordAuthentication(username, password);
                }
            });

    Message msg = new MimeMessage(session);

    msg.setFrom(new InternetAddress("xyz@business.com"));

    msg.setRecipients(Message.RecipientType.TO,
            InternetAddress.parse("abc@business.com"));
    msg.setSubject("Test E-Mail through Java");

    Transport.send(msg,username,password);
    System.out.println("Sent message successfully...");
}catch(Exception e){

}

您可以尝试执行此操作,这可能会解决您的问题!!!!

答案 1 :(得分:0)

此代码对我有用:-

public static void SendMessage(final String femail, final String fpass, final String email, final String subject, final String message)
{
//Creating properties
Properties props = new Properties();
//Configuring properties for gmail
//If you are not using gmail you may need to change the values
 props.put("mail.smtp.host", "smtp.gmail.com");
 props.put("mail.smtp.port", "587");
 props.put("mail.smtp.auth", "true");
 props.put("mail.smtp.starttls.enable", "true");
 props.put("mail.smtp.ssl.trust", "smtp.gmail.com");     
//Creating a new session
Session session = Session.getDefaultInstance(props,
        new javax.mail.Authenticator() {
            //Authenticating the password
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(femail, fpass);
            }
        });
try {
    //Creating MimeMessage object
    MimeMessage mm = new MimeMessage(session);
    //Setting sender address
    mm.setFrom(new InternetAddress(femail));
    //Adding receiver
    mm.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
    //Adding subject
    mm.setSubject(subject);
    //Adding message
    mm.setText(message);           
    //Sending email
    Transport.send(mm);

} catch (MessagingException e) {
    e.printStackTrace();
}
}

我已经编辑了代码,并使用starttls方法对其进行了设置。

希望会有所帮助!!!!