Есть ли способ получить имя пользователя и пароль от javax.mail.Authenticator и как это работает? - PullRequest
0 голосов
/ 13 января 2020

Итак, я создаю почтовый клиент и для аутентификации на сервере, к которому я подключаюсь, я видел, что это использовалось много раз:

Session session = Session.getInstance(props, new javax.mail.Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(username, password);
        }
    });

Не могу сказать, что полностью понял, как это Кусок кода работает не так, как он используется для входа на сервер.

Может ли кто-нибудь найти время, чтобы объяснить, как он работает для меня?

Я пытался используйте значение username, чтобы мне не нужно было сохранять его в моем файле Properties, но я не могу создать его экземпляр и не могу найти методы get для него ..

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 14 января 2020

Лучшее объяснение состоит в том, что вам почти никогда не нужен этот код . Это осталось от очень, очень, очень старых версий JavaMail, и все просто продолжают копировать и вставлять этот код, потому что никто не знает, как писать код с нуля.

Более длинное объяснение состоит в том, что Authenticator просто способ для JavaMail запросить у приложения имя пользователя и пароль, что позволяет приложению запрашивать у пользователя имя пользователя и приложение. В простом случае «спрашивание» не включено, все имеет статус c, а Authenticator - это просто класс, который содержит имя пользователя и пароль и возвращает их при вызове. Вот что происходит в приведенном выше коде, где анонимный внутренний класс, который является подклассом Authenticator, определяет метод, который возвращает структуру PasswordAuthentication, содержащую имя пользователя и пароль.

...