我正在尝试使用JavaMail API 1.5.5通过Gmail服务器发送经过身份验证的电子邮件。
我按照javaMailAPI 1.5.5 site中的教程使用this google tool但未成功发送邮件。
这是我做的:
private static void sendEmail(String _emailBody){
//used oauth2.py in order to retrieve the access token
String accessToken = getAccessToken(refresh_token,username,client_id,client_secret);
// Setup mail server
Properties props = new Properties();
props.put("mail.imap.ssl.enable", "true"); // required for Gmail
props.put("mail.imap.auth.mechanisms", "XOAUTH2");
Session session = Session.getInstance(props);
Store store = session.getStore("imap");
store.connect("imap.gmail.com", username, accessToken);
MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(username));
msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse(_email));
msg.setSubject("some subject");
msg.setText(_emailBody);
Transport.send(msg);
}
我得到了以下的执行:
com.sun.mail.util.MailConnectException
Couldn't connect to host, port: localhost, 25; timeout -1
我还尝试在属性中切换imap'名称为smtp,但在这种情况下程序停留在
store.connect("imap.gmail.com", username, accessToken);
我该如何解决?我在网上搜索了答案,但没有找到答案。
修改:
与建议的问题不完全相同。我在2016年发布的JavaMailAPI 1.5.5上使用oauth2身份验证。连接方法不同。旧的不起作用。
它说存在身份验证问题。此外,我不使用用户名和密码,而是谷歌提供的用户名和访问令牌。
答案 0 :(得分:2)
您缺少对JavaMail API的一些基本了解。商店用于阅读邮件,传输用于发送邮件。 Gmail are in the JavaMail FAQ的基本示例。尝试使用该代码,如果仍然无效,请使用您正在使用的代码更新您的问题并发布JavaMail debug output。