JavaMail с Gmail: 535-5.7.1 Имя пользователя и пароль не принимаются - PullRequest
13 голосов
/ 03 июня 2010

Я получаю эту ошибку, когда пытаюсь отправить письмо с помощью JavaMail API. Я уверен, что имя пользователя и пароль верны на 100%. Учетная запись Gmail, к которой я подключаюсь, является более старой, поскольку, по их словам, для работы с новыми учетными записями требуется время.

DEBUG SMTP RCVD: 535-5.7.1 Username and Password not accepted. Learn more at

535 5.7.1 http://mail.google.com/support/bin/answer.py?answer=14257 x35sm3011668
wfh.6

javax.mail.SendFailedException: Sending failed;
  nested exception is:
        javax.mail.AuthenticationFailedException
        at javax.mail.Transport.send0(Transport.java:218)
        at javax.mail.Transport.send(Transport.java:80)
        at Main.(Main.java:41)
        at Main.main(Main.java:51)

и это мой код:

import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

public class Main
{
    String  d_email = "abc@gmail.com",
            d_password = "pass",
            d_host = "smtp.gmail.com",
            d_port  = "465",
            m_to = "abc@gmail.com",
            m_subject = "Testing",
            m_text = "testing email.";

    public Main()
    {
        Properties props = new Properties();
        props.put("mail.smtp.user", d_email);
        props.put("mail.smtp.host", d_host);
        props.put("mail.smtp.port", d_port);
        props.put("mail.smtp.starttls.enable","true");
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.debug", "true");
        props.put("mail.smtp.socketFactory.port", d_port);
        props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");

        SecurityManager security = System.getSecurityManager();

        try
        {
            Authenticator auth = new SMTPAuthenticator();
            Session session = Session.getInstance(props, auth);
            session.setDebug(true);
            MimeMessage msg = new MimeMessage(session);
            msg.setText(m_text);
            msg.setSubject(m_subject);
            msg.setFrom(new InternetAddress(d_email));
            msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));
            Transport.send(msg);
        }
        catch (Exception mex)
        {
            mex.printStackTrace();
        } 
    }

    public static void main(String[] args)
    {
        Main blah = new Main();
    }

    private class SMTPAuthenticator extends javax.mail.Authenticator
    {
        public PasswordAuthentication getPasswordAuthentication()
        {
            return new PasswordAuthentication(d_email, d_password);
        }
    }
}

Ответы [ 5 ]

17 голосов
/ 19 февраля 2019

У меня была такая же проблема: Я ссылаюсь на эту ссылку , я следовал приведенным ниже инструкциям, которые у меня работали

По умолчанию учетная запись Gmail надежно защищена. Когда мы используем Gmail SMTP из не Gmail инструмент, электронная почта блокируется. Чтобы протестировать в нашей локальной среде, сделайте свою учетную запись Gmail менее безопасной, как

  1. Войдите в Gmail.
  2. Доступ к URL-адресу как https://www.google.com/settings/security/lesssecureapps
  3. Выберите «Включить»
10 голосов
/ 03 июня 2010

Данный фрагмент кода отлично работает на моей учетной записи Gmail, поэтому эта проблема лежит в другом месте. Вы переходили по ссылке , указанной в сообщении об ошибке ? Содержит следующие подсказки:

  • Убедитесь, что вы ввели свой полный адрес электронной почты (например, username@gmail.com)
  • Введите пароль еще раз, чтобы убедиться, что он правильный. Имейте в виду, что пароли чувствительны к регистру.
  • Убедитесь, что ваш почтовый клиент не настроен на проверку новой почты слишком часто. Если ваш почтовый клиент проверяет наличие новых сообщений чаще, чем раз в 10 минут, ваш клиент может неоднократно запрашивать ваше имя пользователя и пароль.

Особенно важен последний пункт. Гугл очень строг в этом. Если вы пытаетесь подключить Gmail, например, более 10 раз в минуту программным путем, возможно, вы уже заблокированы. Имейте немного терпения, через некоторое время он разблокируется.

Если вы хотите больше свободы при отправке почты, я рекомендую поискать выделенный почтовый хост или настроить свой собственный почтовый сервер, такой как Apache James или Microsoft Exchange. Я уже подробно ответил на это в одном из ваших предыдущих вопросов.

7 голосов
/ 21 декабря 2012

Я столкнулся с точно такой же проблемой, для меня причина в том, что я включил двухэтапную проверку в моей учетной записи Gmail.

После создания нового пароля для конкретного приложения и использования его в моем java-приложении эта проблема «535 5.7.1» исчезла.

Вы можете создать новый пароль для конкретного приложения, следуя этому официальному руководству Google .

1 голос
/ 01 марта 2019

Я столкнулся с той же проблемой, хотя мои имя пользователя и пароль были правильными, но после некоторых исследований я смог отправить электронную почту через приложения, включив параметр Менее безопасный доступ к приложению мой аккаунт Gmail. Вы можете найти эту функцию в security в левом меню.

Ссылки по теме:

1 голос
/ 04 ноября 2017

У меня такое же сообщение об ошибке, и вот как я решил проблему,

Создание пароля приложения: вот как мы можем сгенерировать пароль приложения,

1. Visit your App passwords page. You may be asked to sign in to your Google Account.

2. At the bottom, click Select app and choose the app you’re using.
Click Select device and choose the device you’re using.

3. Select Generate.

4. Follow the instructions to enter the App password (the 16 character code in the yellow bar) on your device.

5. Select Done.

Я работал в загрузочном приложении Spring и получал пароль от приложения, например, sadsadaffferere для адреса электронной почты, xyz@gmail.com. Итак, мне нужно настроить свойства приложения следующим образом:

# the email settings
# ------------------
spring.mail.host=smtp.gmail.com
spring.mail.username=xyz@gmail.com
spring.mail.password=sadsadaffferere
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
spring.mail.properties.mail.smtp.socketFactory.fallback=false
support.email=xyz@gmail.com

После этого все работает нормально

...