Сначала нужно выполнить команду STARTTLS при попытке отправить сообщение SimpleMailMessage в Grails - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь отправить сообщение в приложении Grails. Я использую код Java с этой проблемой, но вот мой код

SimpleMailMessage message_ref = new SimpleMailMessage();
JavaMailSenderImpl sender_ref = new JavaMailSenderImpl();

           sender_ref.setHost("smtp.gmail.com")
           sender_ref.setUsername("testAccount@googlemail.com")
           sender_ref.setPassword("topsecret")
           message_ref.setTo("testRecipient@gmx.de")
           message_ref.setSubject("Hello there")
           message_ref.setText("How are you")
           sender_ref.send(message_ref)

Я получаю следующее исключение:

SMTPSendFailedException: 530 5.7.0 Сначала необходимо выполнить команду STARTTLS

Я нашел подобную проблему здесь на stackoverflow здесь Сначала необходимо выполнить команду STARTTLS. Отправка электронной почты с помощью Java и Google Apps но это не помогло мне, потому что он использовал другой подход.

Может кто-нибудь сказать мне, что не так? Я ожидаю, что ошибка не в коде, а в каком-то файле конфигурации, и именно здесь мои знания оканчиваются.

Ответы [ 3 ]

2 голосов
/ 16 июля 2011

Цитирование из Почтового плагина Grails Документация:

grails {
   mail {
     host = "smtp.gmail.com"
     port = 465
     username = "youracount@gmail.com"
     password = "yourpassword"
     props = ["mail.smtp.auth":"true",                     
              "mail.smtp.socketFactory.port":"465",
              "mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
              "mail.smtp.socketFactory.fallback":"false"]
} }
1 голос
/ 15 июля 2011

Я не могу вам чем-то помочь, но ваша проблема в основном в том, что вам нужно использовать SSL для связи с сервером.Google не разрешает общение в открытом тексте по многим веским причинам.Я не знаю много о Grails, но я предполагаю, что у него есть какая-то поддержка ssl.Если это не так, вам, вероятно, лучше сделать это в javax.mail.

StartTLS - это просто текстовая команда, которую вы отправляете на smtp-сервер, чтобы явно запустить безопасную связь.

0 голосов
/ 26 марта 2018
Properties properties = new Properties();
properties.put("mail.smtp.host", smtpHost);
properties.put("mail.smtp.port", smtpPort);
properties.put("mail.smtp.starttls.enable", "true");
properties.put("mail.user", userName);
properties.put("mail.password", password);
...