有没有办法从 javax.mail.Authenticator 获取用户名和密码?它是如何工作的?

Is there a way to get username & password from javax.mail.Authenticator and how does it work?

所以我正在构建一个电子邮件客户端并向我连接的服务器进行身份验证我已经看到它被大量使用:

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

我不能说我已经完全掌握了这段代码的工作原理,除了它用于登录服务器的某些地方。

有人可以花时间向我解释一下它是如何工作的吗?

我一直在尝试使用 username 值,因此我不必将它存储在我的 Properties 文件中,但我无法实例化它,也找不到任何获取方法。 .

感谢任何帮助!

最好的解释就是你almost never need that code。它是非常非常非常旧版本的 JavaMail 遗留下来的,每个人都只是不断地复制和粘贴该代码,因为没有人知道如何从头开始编写代码了。

较长的解释是,Authenticator 只是 JavaMail 向应用程序询问用户名和密码的一种方式,它允许应用程序向用户询问用户名和应用程序。在简单的情况下,不涉及 "asking",一切都是静态的,Authenticator 只是一个 class,它保存用户名和密码,并在调用时 returns 它们。这就是上面代码中发生的事情,其中​​匿名内部 class 是 Authenticator 的子 class 定义了一个方法 returns 包含用户名和密码的 PasswordAuthentication "struct"。