【发布时间】:2016-10-08 02:22:01
【问题描述】:
我正在尝试使用 javax.mail 和 Google OAuth 发送电子邮件。我的工作流程是:
用户使用 Google OAuth 登录,获取 access_token,将令牌发送到 java 后端服务器,然后使用 javax.mail 进行身份验证并通过电子邮件和令牌发送电子邮件,而不是电子邮件和密码。但是,我在 props 中设置了令牌后,仍然收到无效的用户名和密码错误。您有任何解决方法的想法吗?
Properties props = new Properties();
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.starttls.required", "true");
props.put("mail.smtp.sasl.enable", "true");
props.put("mail.smtp.sasl.mechanisms", "XOAUTH2");
props.put("mail.smtp.auth", "false");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.imaps.auth.login.disable", "true");
props.put("mail.imaps.auth.plain.disable", "true");
props.put(OAuth2SaslClientFactory.OAUTH_TOKEN_PROP, accessToken);
Session session = Session.getInstance(props);
session.setDebug(true);
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail));
mimeMessage.setSubject("test");
mimeMessage.setContent("xxx", "text/html");
SMTPTransport transport = (SMTPTransport)session.getTransport("smtp");
transport.connect("smtp.gmail.com", myEmailAddress, "");
transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
transport.close();
【问题讨论】:
标签: java smtp jakarta-mail google-oauth