该问题通常由于连接SMTP服务器时使用的SSL协议版本不受SMTP服务器支持而导致。解决方法是强制使用较低的SSL协议版本。以下是可以使用的代码示例:
// 创建 JavaMail session
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");
Session session = Session.getInstance(props, null);
// 创建 OAuth2 认证器
OAuth2Authenticator authenticator = new OAuth2Authenticator(userEmail, accessToken);
// 获取 SMTP 连接器
SMTPTransport transport = (SMTPTransport) session.getTransport("smtp");
transport.connect(smtpHost, smtpPort, userEmail, null);
// 设置 OAuth2 认证器
transport.setOAuth2Token(authenticator.getAccessToken());
// 发送邮件
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(userEmail));
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(toEmails));
message.setSubject("Test Email");
message.setText("Test Email Content");
Transport.send(message);
其中,使用 "mail.smtp.ssl.protocols" 属性强制使用 TLSv1.2 协议版本。您可以根据您需要的协议版本更改该属性。