Используйте сервисную учетную запись Google для отправки электронной почты через smtp.gmail.com.JAVA

Программисты JAVA общаются здесь
Anonymous
Используйте сервисную учетную запись Google для отправки электронной почты через smtp.gmail.com.

Сообщение Anonymous »

Я пытаюсь использовать учетную запись Gmail, которую использовал до сих пор, для автоматической ретрансляции электронной почты с помощью веб-приложения. Использование электронной почты и пароля небезопасно и поэтому запрещено с 30 сентября. Я хочу использовать предоставленный сервисный аккаунт, так как двухэтапный метод подтверждения мне не подходит. Поэтому я хотел бы использовать учетную запись службы с токеном доступа.
Токен создается в учетных данных с помощью этого оператора.

Код: Выделить всё

GoogleCredential credential = GoogleCredential.fromStream(fileStream)
.createScoped(ImmutableSet.of("https://mail.google.com/",
"https://www.googleapis.com/auth/gmail.send"))
.setExpirationTimeMilliseconds(1200000L);
Я получил токен доступа, затем пытаюсь отправить электронные письма с помощью Java-почты и следующих свойств:

Код: Выделить всё

properties.setProperty("mail.smtp.starttls.required", "true");
properties.setProperty("mail.smtp.sasl.enable", "true");
properties.setProperty("mail.smtp.sasl.mechanisms", "XOAUTH2");
properties.setProperty("mail.smtp.auth.login.disable", "true");
properties.setProperty("mail.smtp.auth.plain.disable", "true");

properties.setProperty("mail.smtp.host", "smtp.gmail.com");
properties.setProperty("mail.smtp.port", "587");
properties.setProperty("mail.transport.protocol", "smtp");
properties.setProperty("mail.smtp.auth", "true");
properties.setProperty("mail.smtp.user", "service_account_email");
И с помощью Java Authenticator установите адрес электронной почты (адрес электронной почты учетной записи службы) и пароль (токен доступа). Я пробовал использовать электронную почту служебной учетной записи и основную учетную запись, но попытка аутентификации с помощью метода Sasl XOAUTH2 не удалась.
Я хотел бы использовать G API для отправки электронных писем , но система в ее текущей конфигурации должна ретранслировать электронные письма через почтовую библиотеку Java, а не через API Google.
Трассировка SMTP:

Код: Выделить всё

EHLO ----
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
STARTTLS
220 2.0.0 Ready to start TLS
EHLO ----
250-SIZE 35882577
250-8BITMIME
250-AUTH LOGIN PLAIN XOAUTH2 PLAIN-CLIENTTOKEN OAUTHBEARER XOAUTH
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-CHUNKING
250 SMTPUTF8
DEBUG SMTP: Authenticate with SASL
DEBUG SMTP: SASL mechanisms allowed: XOAUTH2
DEBUG SMTP: SASL Mechanisms:
DEBUG SMTP:  XOAUTH2
DEBUG SMTP:
DEBUG SMTP: SASL client XOAUTH2
DEBUG SMTP: SASL callback length: 2
DEBUG SMTP: SASL callback 0: javax.security.auth.callback.NameCallback@2e539008
DEBUG SMTP: SASL callback 1: javax.security.auth.callback.PasswordCallback@763557bd
DEBUG SMTP: SASL authentication failed
Код SMTP, полученный в случае неудачной аутентификации, был 555.

Подробнее здесь: https://stackoverflow.com/questions/789 ... -gmail-com

Вернуться в «JAVA»