2015-09-30 1 views
3

Я использую почтовый плагин Grails (2.0.0.RC2) с Grails 3.0.7. Это мой конфиг:Проблемы с плагинами почты Grails с Gmail SMTP

mail: 
     host: smtp.gmail.com 
     port: 465 
     username: [email protected] 
     password: myPassword 
     props: 
      - mail.debug: true 
      - mail.smtp.auth: true 
      - mail.smtp.socketFactory.port: 465 
      - mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory 
      - mail.smtp.socketFactory.fallback: false 

При попытке отправить тестовое сообщение, я получаю следующее сообщение об ошибке:

Caused by: org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1. Failed messages: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1 
    at grails.plugins.mail.MailMessageBuilder.sendMessage(MailMessageBuilder.groovy:131) ~[mail-2.0.0.RC2.jar:na] 
    at grails.plugins.mail.MailService.sendMail(MailService.groovy:55) ~[mail-2.0.0.RC2.jar:na] 
    at grails.plugins.mail.MailService.sendMail(MailService.groovy:59) ~[mail-2.0.0.RC2.jar:na] 
    at com.eduspace.ClassroomController.$tt__index(ClassroomController.groovy:13) ~[main/:na] 
    at grails.transaction.GrailsTransactionTemplate$2.doInTransaction(GrailsTransactionTemplate.groovy:93) ~[grails-core-3.0.7.jar:3.0.7] 
    at grails.transaction.GrailsTransactionTemplate.execute(GrailsTransactionTemplate.groovy:90) ~[grails-core-3.0.7.jar:3.0.7] 
    ... 9 common frames omitted 
Caused by: javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465, response: -1 
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1972) ~[javax.mail-1.5.1.jar:1.5.1] 
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:656) ~[javax.mail-1.5.1.jar:1.5.1] 
    at javax.mail.Service.connect(Service.java:345) ~[javax.mail-api-1.5.1.jar:1.5.1] 
    ... 15 common frames omitted 

Я не вижу никакой другой информации отладки в журналах. У меня есть корневой регистратор, установленный в INFO, поэтому все должно быть получено. Я проверил, что я могу telnet подключиться к порту smtp.gmail.com 465, так что это не проблема. Я читал, что у других были проблемы с SSL, но тогда обычно есть отладочная информация, указывающая на проблему с SSL, и я не получаю ничего подобного.

+0

Это может быть причиной вашего антивируса. У меня была эта проблема, и причина была * Avast Mail Shield * –

+0

На данный момент у меня нет антивируса. Я попытался открыть сокет для smtp.gmail.com на порту 465 в своем приложении Grails и смог это сделать, поэтому я знаю, что он может подключиться. – cloudwalker

+0

Какая обозначение двоеточия используется здесь? Я думал, что config.groovy должен был быть чем-то вроде grails {mail {host = ....}} –

ответ

6

Я использую немного другую конфигурацию, которая работает отлично:

grails: 
    mail: 
     host: "smtp.gmail.com" 
     port: 465 
     username: "<username>@gmail.com" 
     password: "<password>" 
     props: 
      mail.smtp.auth: "true" 
      mail.smtp.socketFactory.port: "465" 
      mail.smtp.socketFactory.class: "javax.net.ssl.SSLSocketFactory" 
      mail.smtp.socketFactory.fallback: "false" 

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

+1

Как ни странно, удаление черт работало ... Однако я думал, что эти свойства должны были быть списком, а в YAML список представлен тире, поэтому не уверен там :) В любом случае, он работает сейчас! – cloudwalker

+0

Наконец-то это помогло мне! Я также неправильно использовал настройки реквизита, используя тире, а также скобки. По-прежнему была получена ошибка о невозможности подключения к gmail. В моем случае мне также нужно было использовать 'mail.smtp.ssl.enable:" true ". Тогда мне удалось подключиться и отправить сообщения. – Guus

+0

Спасибо. Теперь он работает после фиксации «реквизита», как указано выше. –

2

Это может быть неправильным из-за ошибки конфигурации, но одной из причин этого точного сообщения об ошибке является настройка gmail. Чтобы избежать спам-сообщений, gmail начал блокировать доступ к приложениям, которые не соответствуют последним рекомендациям по безопасности.

Один простой способ избежать этой ошибки, чтобы перейти в свой аккаунт GMAIL и позволить менее безопасным apps.- https://www.google.com/settings/security/lesssecureapps

0

Ваша конфигурация выглядит хорошо.

Вот шахта работает отлично:

grails { 
    mail { 
     host = "smtp.gmail.com" 
     'default' { 
      from = "<username>@gmail.com" 
     } 
     port = 465 
     username = "<username>@gmail.com" 
     password = "<password>" 
     props = ["mail.smtp.auth":"true",      
      "mail.smtp.socketFactory.port":"465", 
      "mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory", 
      "mail.smtp.socketFactory.fallback":"false"] 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^