【问题标题】:Sending a mail with Sendgrid from a Grails 2.0 application on Heroku从 Heroku 上的 Grails 2.0 应用程序使用 Sendgrid 发送邮件
【发布时间】:2011-12-22 18:45:42
【问题描述】:

我正在尝试通过 Heroku 上的 Sendgrid 从我的 Grails 2.0 应用程序发送电子邮件,但我找不到正确的配置。我不断收到“连接被拒绝”异常:

java.net.ConnectException: Connection refused
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384)
at java.net.Socket.connect(Socket.java:546)
at java.net.Socket.connect(Socket.java:495)
at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233)
at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
at javax.mail.Service.connect(Service.java:288)
at grails.plugin.mail.MailMessageBuilder.sendMessage(MailMessageBuilder.groovy:102)
at grails.plugin.mail.MailService.sendMail(MailService.groovy:39)
at MailGrailsPlugin$_configureSendMail_closure6.doCall(MailGrailsPlugin.groovy:149)

我尝试的最新配置如下:

grails {
    mail {
        host = "smtp.sendgrid.net"
        port = 587
        username = System.env.SENDGRID_USERNAME
        password = System.env.SENDGRID_PASSWORD
        props = [
                "mail.smtp.protocol":"smtps",
                "mail.smtp.channel":"plain",
                "mail.smtp.auth":"true",
                "mail.debug":"true"
        ]
    }
}

【问题讨论】:

  • 其实好像和Heroku或者Sendgrid一点关系都没有。当尝试使用文档中的配置示例通过 GMail 从本地主机发送电子邮件时,我遇到了同样的异常。我最好的猜测是 Grails 邮件插件和 Grails 2.0 存在问题
  • 我认为你是对的,因为当我 bash 进入 Heroku dyno “heroku run bash”,然后 telnet 到端口 587 上的 smtp.sendgrid.net 时,它可以正常连接。
  • 您还可以使用具有 RESTful API 的 MailGun 插件来发送邮件。这是一个 Java 示例:github.com/heroku/shareheroku-java/blob/master/app/helpers/…

标签: email grails heroku sendgrid


【解决方案1】:

您可能有防火墙或 ISP 阻止了端口 587。试试这个:http://support.sendgrid.com/entries/131119-help-smtp-port-25-is-being-blocked

Elmer Thomas,SendGrid.com 的开发人员宣传员

【讨论】:

  • 正如我所说,目前我认为这与 SendGrid 没有任何关系,因为我无法通过 SendGrid 或 GMail 从我自己的机器上发送消息。 Grails 2.0中的Mail插件似乎有问题。
【解决方案2】:

其实问题出在我的 Grails 配置上。出于某种原因,我的邮件配置在某个时候被重置,而我在 Config.groovy 中的内容没有被使用。因此,该应用程序尝试通过 localhost 发送电子邮件,但没有成功。我找到了解决这个问题的方法,但我还不明白它为什么会起作用。

【讨论】:

    猜你喜欢
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-21
    • 2014-09-09
    • 2012-09-17
    • 2019-05-27
    • 1970-01-01
    相关资源
    最近更新 更多