Исключение исключения SMTPSendFailedException при отправке электронной почты в java spring web app [duplicate]

Просто для удовольствия: простое решение для JavaScript.

document.querySelectorAll('.container').forEach(clear);

function clear(element) {
  element.childNodes.forEach(check, element);
}

function check(item) {
  if (item.nodeType === 3) this.removeChild(item);
}
span {
  display: inline-block;
  width: 100px;
  background-color: palevioletred;
}
<p class="container">
  <span> Foo </span>
  <span> Bar </span>
</p>

18
задан DevDave 25 June 2013 в 17:52
поделиться

6 ответов

Вероятно, вы пытаетесь использовать серверы Gmail на порту 25 для доставки почты третьей стороне по не прошедшему проверку подлинности. Gmail не позволяет вам это делать, потому что тогда любой может использовать серверы Gmail для отправки почты кому-либо еще. Это называется открытым реле и является обычным средством спама в первые дни. Открытые реле больше не приемлемы в Интернете.

Вам нужно будет попросить вашего SMTP-клиента подключиться к Gmail с использованием аутентифицированного соединения, возможно, на -порте 587 .

26
ответ дан Greg Hewgill 27 August 2018 в 23:00
поделиться

Попробуйте этот код:

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.prot", "465");

                        Session session = Session.getDefaultInstance(props,
                                new javax.mail.Authenticator() {
                            protected PasswordAuthentication getPasswordAuthentication() {

                                return new PasswordAuthentication("PUT THE MAIL SENDER HERE !", "PUT THE PASSWORD OF THE MAIL SENDER HERE !");
                            }
                        }
                        );
                        try {
                            Message message = new MimeMessage(session);
                            message.setFrom(new InternetAddress("PUT THE MAIL SENDER HERE !"));
                            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("PUT THE MAIL RECEIVER HERE !"));
                            message.setSubject("MAIL SUBJECT !");
                            message.setText("MAIL BODY !");
                            Transport.send(message);

                        } catch (Exception e) {
                            JOptionPane.showMessageDialog(null, e);
                        }

Вам нужно меньше защищать безопасность отправителя почты. если проблема сохраняется, я думаю, что это может быть вызвано антивирусом, попробуйте отключить его.

0
ответ дан Haddad 27 August 2018 в 23:00
поделиться

Добавление

props.put("mail.smtp.starttls.enable", "true");

решило мою проблему;)

Моя проблема была :

com.sun.mail. smtp.SMTPSendFailedException: 530 5.7.0 Сначала необходимо выполнить команду STARTTLS. u186sm7971862pfu.82 - gsmtp

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at com.example.sendmail.SendEmailExample2.main(SendEmailExample2.java:53)
3
ответ дан Krishna 27 August 2018 в 23:00
поделиться

порт smtp и socketFactory должны быть изменены

    String to = "reciveremail@xxxx.xxx";
    String subject = "subject"
    String msg ="email text...."
    final String from ="senderemail@gmail.com"
    final  String password ="senderPassword"


    Properties props = new Properties();  
    props.setProperty("mail.transport.protocol", "smtp");     
    props.setProperty("mail.host", "smtp.gmail.com");  
    props.put("mail.smtp.auth", "true");  
    props.put("mail.smtp.port", "465");  
    props.put("mail.debug", "true");  
    props.put("mail.smtp.socketFactory.port", "465");  
    props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");  
    props.put("mail.smtp.socketFactory.fallback", "false");  
    Session session = Session.getDefaultInstance(props,  
    new javax.mail.Authenticator() {
       protected PasswordAuthentication getPasswordAuthentication() {  
       return new PasswordAuthentication(from,password);  
   }  
   });  

   //session.setDebug(true);  
   Transport transport = session.getTransport();  
   InternetAddress addressFrom = new InternetAddress(from);  

   MimeMessage message = new MimeMessage(session);  
   message.setSender(addressFrom);  
   message.setSubject(subject);  
   message.setContent(msg, "text/plain");  
   message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));  

   transport.connect();  
   Transport.send(message);  
   transport.close();
   }  

надеюсь, что это сработает для вас ..

9
ответ дан Pradeep Maurya 27 August 2018 в 23:00
поделиться

Я также столкнулся с той же проблемой, пока я создавал приложение для уведомления по электронной почте. вам просто нужно добавить одну строку. Ниже сохранен мой день.

props.put("mail.smtp.starttls.enable", "true");

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Сначала необходимо выполнить команду STARTTLS. h13-v6sm10627790pgp.13 - gsmtp

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2108)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1609)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1117)
at javax.mail.Transport.send0(Transport.java:195)
at javax.mail.Transport.send(Transport.java:124)
at com.smruti.email.EmailProject.EmailSend.main(EmailSend.java:99)

Надеюсь, это вам поможет.

1
ответ дан PyDevSRS 27 August 2018 в 23:00
поделиться
    String username = "mail@google.com";
    String password = "some-password";
    String recipient = "myemail@hotmail.com");

    Properties props = new Properties();

    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.from", "myemail@gmail.com");
    props.put("mail.smtp.starttls.enable", "true");
    props.put("mail.smtp.port", "587");
    props.setProperty("mail.debug", "true");

    Session session = Session.getInstance(props, null);
    MimeMessage msg = new MimeMessage(session);

    msg.setRecipients(Message.RecipientType.TO, recipient);
    msg.setSubject("JavaMail hello world example");
    msg.setSentDate(new Date());
    msg.setText("Hello, world!\n");

    Transport transport = session.getTransport("smtp");

    transport.connect(username, password);
    transport.sendMessage(msg, msg.getAllRecipients());
    transport.close();
-1
ответ дан Vadim Ponomarev 27 August 2018 в 23:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: