Я пытаюсь отправить почту, подключившись к SMTP-серверу Google с использованием механизма oAuth2.
public static Transport connectToSmtp(String smtpServer, int port, String email, String authToken, boolean isDebug, MimeMessage mimeMsg)
throws Exception
{
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.imaps.sasl.mechanisms.oauth2.oauthToken", authToken);
Session session = Session.getInstance(props);
session.setDebug(isDebug);
final String emptyPassword = "";
Transport transport = session.getTransport("smtp");
transport.connect(smtpServer, port, email, emptyPassword);
try
{
transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());
}
catch (Exception e)
{
logger.log(Level.WARNING, "Exception Occured : ", e);
}
return transport;
}
Идентификатор клиента и секрет моего приложения:
ID - 345101 * -i6ki * 4tk1sms.apps.googleusercontent.com
Секрет - e6NHB * - eZ-r k
Приведенный выше код вызвал следующую ошибку:
javax.mail.AuthenticationFailedException: 535-5.7.8 Имя пользователя и пароль не приняты. Подробнее см. На странице 535 5.7.8 https://support.google.com/mail/answer/14257 o135sm276925ith.4 - gsmtp
Сервер Smtp: aspmx.l.google.com, порт: 25
Отредактировано:
Я изменил приведенную ниже информацию для учетной записи Google App, к которой я пытаюсь подключиться, и указанное выше исключение было удалено:
Нет двухэтапной аутентификации
Разрешить менее безопасные приложения «Безопасность» -> «Основные настройки» -> «Перейти к настройкам для менее безопасных приложений» -> «Разрешить пользователям управлять своим доступом к менее безопасным приложениям»
Но после очистки вышеуказанного исключения. У меня есть еще одно исключение.
com.sun.mail.smtp.SMTPSendFailedException: 550-5.7.1 Недействительные учетные данные для ретранслятора [121. . .2]. IP-адрес, который вы зарегистрировали в службе SMTP Relay Google Apps, не соответствует домену учетной записи, с которой отправляется это электронное письмо. Если вы пытаетесь ретранслировать почту из домена, который не зарегистрирован в вашей учетной записи Googles Apps или имеет пустой конверт, вы должны настроить свой почтовый сервер на использование SMTP AUTH для идентификации отправляющего домена или для представления одного из ваших доменов. имена в команде HELO или EHLO. Для получения дополнительной информации посетите https://support.google.com/a/answer/6140680#invalidcred f65sm341248ith.1 - gsmtp;
Поэтому я изменил следующие настройки:
Приложения> Google Apps> Gmail> Настройки Gmail> Расширенные настройки
Служба ретрансляции SMTP
- Разрешенные отправители: любые адреса (не рекомендуется)
- Принимать почту только с указанных IP-адресов: Нет
- Требовать аутентификацию SMTP: Да
- Требовать шифрование TLS: Нет
Даже после попытки вышеуказанного изменения выдается то же исключение. Пожалуйста помоги.