Я пытаюсь отправить аутентифицированное письмо через сервер Gmail с помощью JavaMail API 1.5.5.JavaMail - отправить аутентифицированную oauth2 smtp mail
Я следовал учебнику в 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);
}
я получил следующее execption:
com.sun.mail.util.MailConnectException
Couldn't connect to host, port: localhost, 25; timeout -1
Я также попытался включить IMAP в именах свойств к SMTP, но в этом случае программа была застряла на
store.connect("imap.gmail.com", username, accessToken);
Как это можно решить? Я искал в Интернете ответ, но не нашел его.
Edit:
Не точно такой же вопрос, как это было предложено. Я использую аутентификацию oauth2 на JavaMailAPI 1.5.5, которая была выпущена в 2016 году. Метод подключения отличается. Старый не работает.
В нем говорится, что есть проблема с аутентификацией. Кроме того, я не использую имя пользователя и пароль, но имя пользователя и токен доступа, предоставляемые google.
Возможный дубликат [MailConnectException при отправке почты с использованием java mail api] (http://stackoverflow.com/questions/20766044/mailconnectexception-while-sending-mail-using-java-mail-api) – DaImTo
@DalmTo Не совсем , Я использую аутентификацию oauth2 на JavaMailAPI 1.5.5, которая была выпущена в 2016 году. Метод подключения отличается. Старый не работает. В нем говорится, что проблема аутентификации. –
Я также связываюсь с именем пользователя и токеном доступа вместо имени пользователя и пароля. –