Как отправить электронную почту с веб-сервера, используя java.mail, используя сервер Gmail - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь отправить письмо, используя gmail smtp, используя javax.mail. ниже мой код

 public static void send(String from,String password,String to,String sub,String msg){  
      //Get properties object    
      Properties props = new Properties();    
      props.put("mail.smtp.host", "smtp.gmail.com");    
      props.put("mail.smtp.socketFactory.port", "465");    
      props.put("mail.smtp.socketFactory.class",    
                "javax.net.ssl.SSLSocketFactory");    
      props.put("mail.smtp.auth", "true");    
      props.put("mail.smtp.port", "465");    
      //get Session   
      Session session = Session.getDefaultInstance(props,    
       new javax.mail.Authenticator() {    
       protected PasswordAuthentication getPasswordAuthentication() {    
       return new PasswordAuthentication(from,password);  
       }    
      });    
      //compose message    
      try {    
       MimeMessage message = new MimeMessage(session);    
       message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));    
       message.setSubject(sub);    
       message.setText(msg);    
       //send message  
       Transport.send(message);    
       System.out.println("message sent successfully");    
      } catch (MessagingException e) {throw new RuntimeException(e);}    

}  

Код работает нормально Когда я запускаю его на своем локальном сервере, но когда я пытаюсь запустить его на Elastic beanstalk (мой сервер работает на AWS EBS), тогда наступает исключение сбоя аутентификации Примечание. У меня включен доступ к менее защищенному приложению из настроек Google A / C, но я все еще получаю эту ошибку

javax.mail.AuthenticationFailedException: 534-5.7.14 Пожалуйста, войдите в систему через веб-браузер и повторите попытку. 534-5.7.14 Узнайте больше на 534 5.7.14 https://support.google.com/mail/answer/78754 13 см3053341.ити.6 - gsmtp

1 Ответ

0 голосов
/ 11 мая 2019

Пожалуйста, попробуйте с этим

public static void sendPDFReportByGMail(String from, String pass, String to, String subject, String body) {
    Properties props = System.getProperties();
    String host = "smtp.gmail.com";
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.host", host);
    props.put("mail.smtp.user", from);
    props.put("mail.smtp.password", pass);
    props.put("mail.smtp.port", "587");
    props.put("mail.smtp.auth", "true");

    Session session = Session.getInstance(props, new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(from, pass);
        }
    });

    MimeMessage message = new MimeMessage(session);

    try {
        // Set from address
        message.setFrom(new InternetAddress(from));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
        // Set subject
        message.setSubject(subject);
        // Set Mail body
        message.setText(body);

        BodyPart objMessageBodyPart = new MimeBodyPart();

        objMessageBodyPart.setText(body);

        Transport transport = session.getTransport("smtp");
        transport.connect(host, from, pass);
        transport.sendMessage(message, message.getAllRecipients());
        transport.close();
    } catch (AddressException ae) {
        ae.printStackTrace();
    } catch (MessagingException me) {
        me.printStackTrace();
    }
}
...