javax.mail: не могу отправить команду на хост SMTP - PullRequest
0 голосов
/ 28 января 2019

Я новичок в 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);
}

Кто-нибудь, пожалуйста, помогите мнечтобы решить эту проблему.

1 Ответ

0 голосов
/ 28 января 2019

Этот код работает для меня: -

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.

Надеюсь, поможет !!!!

...