Playframework 如何使用play framework 1.x和Amazon SES发送电子邮件?

Playframework 如何使用play framework 1.x和Amazon SES发送电子邮件?,playframework,jakarta-mail,playframework-1.x,amazon-ses,Playframework,Jakarta Mail,Playframework 1.x,Amazon Ses,我正在尝试在我的游戏中发送电子邮件!框架1.2.5应用程序与亚马逊SES。在搜索时,我无法在application.conf中定义amazon SES邮件的配置。我创建了一个用java设置配置的作业。然而,我得到以下例外。整整一天,我都在努力让我的应用程序发送电子邮件。但任何尝试都失败了。我想你可以帮我。 我很感激 @OnApplicationStart public class Bootstrap extends Job{ @Override public void doJob

我正在尝试在我的
游戏中发送电子邮件!框架1.2.5
应用程序与亚马逊SES。在搜索时,我无法在application.conf中定义amazon SES邮件的配置。我创建了一个用java设置配置的作业。然而,我得到以下例外。整整一天,我都在努力让我的应用程序发送电子邮件。但任何尝试都失败了。我想你可以帮我。 我很感激

@OnApplicationStart
public class Bootstrap extends Job{
    @Override
    public void doJob() throws Exception {
    Properties props = play.libs.Mail.getSession().getProperties();
        props.setProperty("mail.transport.protocol","aws");
        props.setProperty("mail.smtp.host","email-smtp.eu-west-1.amazonaws.com");
        props.setProperty("mail.smtp.port","25");
        props.setProperty("mail.aws.user", "...");
        props.setProperty("mail.aws.password", "...");
        System.out.println("AMAZON SES-MAIL PROPERTIES SET SUCCESSFULY");
    }
}
错误

play.exceptions.MailException: Error while sending email
at play.libs.Mail$2.call(Mail.java:186)
at play.libs.Mail$2.call(Mail.java:178)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: org.apache.commons.mail.EmailException: Sending the email to the following server failed : email-smtp.eu-west-1.amazonaws.com:25
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1242)
at org.apache.commons.mail.Email.send(Email.java:1267)
at play.libs.Mail$2.call(Mail.java:183)
    ... 6 more
Caused by: com.sun.mail.smtp.SMTPSendFailedException: 530 Authentication required

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1368)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:886)
at javax.mail.Transport.send0(Transport.java:191)
at javax.mail.Transport.send(Transport.java:120)
at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1232)
    ... 8 more

您正在尝试在端口25上连接-此端口用于未加密的电子邮件,但Google要求对客户端连接进行加密。您应该改用587端口

仅供参考,另一种方法是让sendmail承担重任。继续您的AWS实例

编辑你的剧本!application.conf和set:

mail.smtp.host=127.0.0.1


最后,看看如何从应用程序发送邮件。

我的问题没有得到回答。我发现了我的问题所在。我解释这一点是为了让其他有这类问题的人从中受益。 从一开始,我认为我的问题就不是在安全组中为传出SMTP呼叫定义特定端口。 这是一篇你可以读的好文章。此外,无需在任何引导类中配置AWS SES。我刚刚在application.conf中定义了它,如下所示

mail.transport.protocol=aws
mail.smtp.host=<your aws smpt server name>
mail.smtp.port=587
mail.smtp.user=<your username>
mail.smtp.pass=<your password>
mail.smtp.channel=ssl
mail.transport.protocol=aws
mail.smtp.host=
mail.smtp.port=587
mail.smtp.user=
mail.smtp.pass=
mail.smtp.channel=ssl

然而,邮件进入垃圾邮件文件夹,我找不到为什么会发生这样的事情。如果有人对此有任何想法,请在此发表评论,我将不胜感激:)

谢谢您的回答。我照你说的做了。但我又得到了同样的例外。我已经设法在本地主机上通过gmail smtp发送电子邮件。我认为我在amazon SES配置方面出了问题。我还可以通过亚马逊SES界面通过验证的电子邮件地址发送电子邮件。我怀疑我可能在SES和我的EC2实例上有错误。因为我没有做任何事情让他们认出她。我不知道我应该告诉你什么好让你帮忙我刚刚看到了。为什么即使我将smtp端口设置为587,它仍将转到端口25?将电子邮件发送到以下服务器失败:email smtp.eu-west-1.amazonaws.com:25