似乎我按照其文档说的方式尝试了mail配置,但我仍然得到:
Error 500: Executing action [x] of controller [x] caused exception: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP
我正在使用谷歌应用程序发送电子邮件 - me@dogself.com正在使用Gmail。我不能让grails在我的开发盒上发送测试消息(赢7)。
我的配置是:
host = "smtp.gmail.com"
port = 465
username = "autoresponse@dogself.com"
password = "x"
props = ["mail.smtp.auth":"true",
"mail.smtp.debug":"true",
"mail.smtp.starttls.enable":"true",
"mail.smtp.socketFactory.port":"465",
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory",
"mail.smtp.socketFactory.fallback":"false"]
修改 我是否需要使用某种签名密钥来支持 ssl连接到Gmail?
答案 0 :(得分:3)
尝试以下方法:
props = ["mail.transport.protocol":"smtps",
"mail.smtps.host":"smtp.gmail.com",
"mail.smtps.port":"465",
"mail.smtps.auth":"true"]
这似乎是the standard set of params necessary to connect to Google's SMTP server。关键是使用smtps
代替smtp
加TLS
。
答案 1 :(得分:0)
切换到使用Grails Mail Plugin并再试一次。 Gmail网页末尾附近有一个示例配置。
答案 2 :(得分:0)
如果删除会发生什么:
mail.smtp.starttls.enable: "true"
我没有那个就开始工作了。
答案 3 :(得分:0)
你的"道具"中有两个相互矛盾的属性。声明:
"mail.smtp.starttls.enable":"true"
用于与服务器进行明文握手,然后启动与服务器的TLS加密协商。
"mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory"
需要加密握手。
您指定的端口(465)可以使用其中任何一个,但通常用于加密使用。如果服务器支持它,我建议使用第一个属性"mail.smtp.starttls.enable":"true"
并使用"mail.smtp.starttls.required":"true"
对其进行扩充,以确保在应用程序和SMTP服务器之间加密邮件,并删除 "mail.smtp.socketFactory.class":"javax.net.ssl.SSLSocketFactory"