在Java Play应用程序上通过SendGrid发送邮件失败

时间:2013-02-21 03:27:10

标签: java heroku playframework smtp sendgrid

我正在尝试从我的Java Play 2.10应用程序通过SendGrid发送一个简单的测试电子邮件。我正在使用play-plugins-mailer发送电子邮件并拥有一个免费的(heroku)SendGrid帐户。这是我到目前为止所做的一切:

  • 将play-plugins-mailer依赖项添加到我的Build.scala
  • 将CommonsMailerPlugin添加到我的play.plugins文件
  • 在我的控制器中添加了以下代码以发送电子邮件:

    MailerAPI mail = play.Play.application().plugin(MailerPlugin.class).email();
    mail.setSubject("test subject");
    mail.addRecipient("test@gmail.com");
    mail.addFrom("testapp@heroku.com");
    mail.send("some text");
    
  • 在我的application.conf中添加了以下内容:

    smtp.host="smtp.sendgrid.net"
    smtp.user="[my-sendgrid-user]"
    smtp.pass="[my-sendgrid-pass]"
    smtp.port="587"
    smtp.channel=plain
    

我很确定Mailer工作正常,它似乎只是一个SendGrid配置问题。执行此代码时,我收到此错误:

[RuntimeException:org.apache.commons.mail.EmailException:将电子邮件发送到以下服务器失败:smtp.sendgrid.net:587]

我已尝试在我的本地计算机上以及heroku上运行此操作,我已将SendGrid插件添加到我的应用程序中。

3 个答案:

答案 0 :(得分:1)

你看过这个帖子了吗? Send mail in Heroku using SendGrid

此外,您可能会尝试使用本教程中所述的Typesafe邮件插件:

  

http://blog.flurdy.com/2012/05/send-email-via-sendgrid-on-heroku-using.html

答案 1 :(得分:1)

我认为您可以使用官方SendGrid-java Jithub项目中提供的Java API。

Official Send-Grid Java API

答案 2 :(得分:0)

尝试:

smtp.ssl=true

worked for me