我正在尝试使用SMTP发送电子邮件。 它在我的本地工作正常。但是当我在AWS EC2服务器上构建它时,它不起作用。
这是我配置和发送电子邮件的代码!
对我有什么想法吗?
try{
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable",true);
props.put("mail.smtp.host","smtp.gmail.com");
props.put("mail.smtp.user","test@gmail.com");
props.put("mail.smtp.password","testpassword");
props.put("mail.smtp.port","587");
props.put("mail.smtp.auth",true);
props.put("mail.smtp.ssl.trust", "*");
String[] to = {toEmail};
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress("test@gmail.com"));
InternetAddress[] toAddress = new InternetAddress[to.length];
// To get the array of addresses
for( int i=0; i < to.length; i++ ) { // changed from a while loop
toAddress[i] = new InternetAddress(to[i]);
}
System.out.println("EMAIL TO:"+toEmail);
for( int i=0; i < toAddress.length; i++) { // changed from a while loop
message.addRecipient(Message.RecipientType.TO, toAddress[i]);
}
message.setSubject(subject);
message.setText(content);
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com","test@gmail.com","testpassword");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
catch(Exception ex){
log.debug("send Email failed", ex);
}
答案 0 :(得分:1)
AWS EC2不允许正常使用端口25 - SMTP端口。
受到严重扼杀。
如果您非常轻松地使用它,那么您可能会看到偶尔从AWS账户发送电子邮件。但一般来说它不可靠
要解决此问题,有两个选项
答案 1 :(得分:0)
我们最近也受到这个问题的困扰。默认情况下,AWS限制可以源自ec2实例的连接数量。该限制是EC2服务本身的一部分。具有讽刺意味的是,它没有在EC2服务的“限制”部分中将其作为“限制”提及。表格中已提及此限制,但该限制已从您的帐户中删除:
我无法通过Amazon Elastic Compute Cloud(Amazon EC2)实例的端口25发送电子邮件,或者遇到了频繁的超时错误。如何在EC2实例上卸下端口25节流阀?
在EC2的AWS服务限制页面上也提到了它:
将表单提交给AWS后,只需几分钟即可完成删除。