1

这是一个非常具体的问题,我在 grails nabble 论坛上没有运气,所以我想我会在这里发帖。我正在使用 grails 邮件插件,但我认为我的问题是关于使用 authsmtp 作为我服务器的电子邮件网关的一般问题。

我在使用 authsmtp 从我的应用程序发送邮件时遇到问题。我已经安装并配置了邮件插件,并且最初使用我的 ISP 的 SMTP 服务器来发送邮件。但是,当我部署到 AWS EC2 时,这失败了,因为我的弹性 IP 被 SMTP 主机阻止了。所以我给自己买了一个 authsmtp 帐户,并将我的服务器电子邮件地址设置为 authsmtp 接受的电子邮件地址。

然后我更改了我在 SecurityConfig.groovy 中的配置以指向我被指定的 authsmtp 服务器......

   mailHost = "mail.authsmtp.com"
   mailUsername = "myusername"
   mailPassword = "mypassword"
   mailProtocol = "smtp"
   mailFrom = "valid-authsmtp-address@mydomain.com"
   mailPort = 2525

...在我部署备份到 AWS 之前,我只是想让它在本地工作。发送邮件失败,在我的日志中我有这个例外:

2010-02-13 10:59:44,218 [http-8080-1] ERROR service.EmailerService  - Failed to send emails: Failed messages: com.sun.mail.smtp.SMTPSendFailedException: 513 5.0.0 Your email system must authenticate before sending mail.

org.springframework.mail.MailSendException; nested exception details (1) are:
Failed message 1:
com.sun.mail.smtp.SMTPSendFailedException: 513 5.0.0 Your email system must authenticate before sending mail. at
com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1388)
       at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:959)
       at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:583)

我有点迷茫,因为我在配置中提供的用户名和密码绝对正确。

与 authsmtp 支持的简短且不是很有帮助的对话表明我需要在发送之前对我的凭据进行 MD5 和/或 base64 编码,所以我的问题分为三个部分......

1)知道失败是怎么回事以及为什么会出现该消息吗?2) 我将如何编码凭据以传递给 authsmtp 以及如何为邮件插件配置它 3) 是否有人成功连接并通过 authsmtp 从邮件插件,特别是从 AWS EC2 发送邮件?

4

2 回答 2

0

使用 Acegi 插件发送电子邮件时,在后台使用了 Spring JavaMailSenderImpl。查看它的文档

请注意,必须将基础 JavaMail 会话配置为将属性“mail.smtp.auth”设置为 true,否则 JavaMail 运行时将不会将指定的密码发送到邮件服务器。如果您没有明确传递要使用的 Session,只需通过 setJavaMailProperties(java.util.Properties) 指定此设置。

因此,将以下内容附加到您的 SecurityConfig.groovy:

javaMailProperties = [ "mail.smtp.auth": true]
于 2010-02-22T12:00:03.047 回答
0

我没有找到使用 Grails 邮件插件的解决方案,所以我仍然对答案感兴趣,但是我确实找到了一个workround。如果其他人跟随我走上这条孤独的道路,它可能会很有用。

于 2010-03-12T15:09:40.913 回答