所以我通过SES购买了一个域名,我已经通过SES验证了。我通过使用workmail网络应用程序登录电子邮件测试了发送/接收工作。我在尝试使用my发送电子邮件时收到以下错误春季应用。 javax.mail.MessagingException:无法连接到SMTP主机:email-smtp.eu-west-1.amazonaws.com,端口:25,响应:421
Appconfig.Java
@Configuration
@PropertySource("app.properties")
@EnableTransactionManagement
public class AppConfig {
@Autowired
private Environment env;
@Bean
public JavaMailSender getJavaMailSender() {
JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
mailSender.setHost("email-smtp.eu-west-1.amazonaws.com");
mailSender.setPort(25);
mailSender.setUsername("noreply@mydomain.com");
mailSender.setPassword("mypassword");
Properties props = mailSender.getJavaMailProperties();
props.put("mail.transport.protocol", "smtp");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.starttls.required", "true");
props.put("mail.debug", "true");
return mailSender;
}}
EmailServiceImpl.java
@Component
public class EmailServiceImpl {
@Autowired
public JavaMailSender emailSender;
public void sendSimpleMessage(String toAddress, String subject, String text)
{
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(toAddress);
message.setSubject(subject);
message.setText(text);
emailSender.send(message);
}
}
EmailServiceImpl自动装入我的网络控制器,我在生成密码重置令牌后发送电子邮件
答案 0 :(得分:1)
首先,您已经按照AWS文档中所述正确完成了所有操作。 您可以正确使用smtp凭据,就像使用他们的smtp界面发送邮件一样,而不是使用他们的aws sdk发送邮件(如果使用aws sdk,则必须使用acces密钥和密码)。
但是,这里还有其他一些问题,可能会帮助您解决文档中没有的我们必须解决的问题。 您必须对smtp发送的错误代码进行故障排除。 通常,当收件人邮件服务器正忙于接收大量邮件时,会显示SMTP错误代码421,因此,通过提供此错误代码来临时推迟您的邮件,否则收件人客户端会遇到一些问题。 你可以在这里学习。 https://sendgrid.com/blog/smtp-server-response-codes-explained/#:~:text=421%20%E2%80%93%20Your%20message%20was%20temporarily,locked%20or%20is%20not%20routable。 https://www.arclab.com/en/kb/email/smtp-response-codes-error-messages.html#:~:text=The%20SMTP%20error%20421%20is,see%20SMTP%20Error%20451%20below)。 您可以在一段时间后尝试发送邮件,也可以尝试使用其他端口发送邮件。
我的事件: 我正在使用AWS SES从Springboot应用程序发送邮件。 我也像您一样使用AWS ses的SMTP接口。 AWS管理控制台上列出了3个用于发送邮件的端口。 但是,当我使用端口465时,它无法工作。 但是,当我使用端口25或端口587时,它正在工作。 但是,即使那样,也始终建议使用587,这是IETF推荐的,并且最安全地用于TLS。 最少建议使用465端口。您可以在此处进行研究,但AWS对此提供了支持。仍有许多客户端仍在支持它,但并未广泛使用它。 就我而言,我告诉过你它失败了。 您可以在此处了解所有3个端口以及465端口与25和587端口有何不同 但是,您可以通过使用smtps协议来解决端口465的问题。 25587端口(使用smtp作为协议) 465端口(使用smtps作为协议,因为在这种情况下,客户端必须启动tls加密) https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-connect.html 您可以从何处选择端口获取指南。 https://pepipost.com/blog/25-465-587-2525-choose-the-right-smtp-port/
答案 1 :(得分:0)
您正在使用端口25. SES使用端口465或2465.还要记住使用SES SMTP凭据而不是您的IAM凭据(AccessKey)。