要解决AWS SES SMTP不接受TLSv1.3的问题,可以通过设置SMTP客户端的SSL版本来强制使用较低的TLS版本。以下是一个示例代码,使用JavaMail库发送电子邮件时可以设置SSL版本:
import javax.mail.*;
import javax.mail.internet.*;
public class SendEmail {
public static void main(String[] args) {
final String username = "your_username";
final String password = "your_password";
final String recipientEmail = "recipient_email@example.com";
// SMTP服务器主机名和端口号
String host = "smtp.example.com";
int port = 587;
// 创建Properties对象并设置SMTP属性
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.ssl.protocols", "TLSv1.2"); // 设置SSL版本为TLSv1.2
// 创建Session对象
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
// 创建MimeMessage对象并设置邮件内容
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipientEmail));
message.setSubject("Test Email");
message.setText("This is a test email.");
// 发送邮件
Transport.send(message);
System.out.println("Email sent successfully!");
} catch (MessagingException e) {
e.printStackTrace();
}
}
}
在上面的示例代码中,通过设置props.put("mail.smtp.ssl.protocols", "TLSv1.2")
来指定SMTP客户端使用TLSv1.2版本。这将解决AWS SES SMTP不接受TLSv1.3的问题。请确保将your_username
、your_password
和recipient_email@example.com
替换为实际的值,并将smtp.example.com
更改为您的SMTP服务器主机名。