java - 如何在带有 JavaMail 的 Java EE 应用程序中使用 Authenticator 子类

标签 java jakarta-ee jakarta-mail mail-server james

在 Java SE 中,使用这样的代码很容易支持身份验证部分:

Session session = session.getInstance(props,new MyAuthenticator());

但在 Java EE 中, session 实例不是由应用程序创建的,而是由应用程序中的应用程序服务器通过 JNDI 注入(inject)提供的。

@Resource(name = "mail/JMsession")
private Session session

这里如何处理身份验证部分? @Resource 注释中的authenticationType 参数怎么样

@Resource(name = "mail/JMsession", authenticationType = AuthenticationType.APPLICATION)  

最佳答案

在 Java EE 中,您可以使用 @MailSessionDefinition注释(或 XML 中的等效项)来定义邮件 Session您稍后注入(inject)。

userpassword 属性是程序化Authenticator 的声明式版本。的PasswordAuthentication .

@MailSessionDefinition 可在 Java EE 7 服务器上使用,例如 GlassFish 4,并且也已在 WildFly 8(以前的 JBoss AS 8)中使用。

关于java - 如何在带有 JavaMail 的 Java EE 应用程序中使用 Authenticator 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18835450/

相关文章:

java - 字符串#split。限制参数的副作用

java - 如何使我的应用程序在选择时以及用户选择文件夹时读取我的文件,然后使应用程序读取其中的所有文件?

java - 为文档添加权重 Lucene 8

java - 为什么 i=i+j 与 i+=j 不同

servlets - 在基于 servlet 的应用程序中放置以及如何读取配置资源文件?

java - 通过java邮件发送带有包含byte[]附件的电子邮件

linux - 尝试创建 .ear 文件。但耳朵内部的结构却并不如想象的那样

jakarta-ee - servletRequest是接口(interface)还是类?ServletRequest和HttpServletRequest有什么区别?

java - 使用 Java 如何在使用 javamail 阅读 pop3 电子邮件时从中删除 html?

当用户名包含 '@' 字符时,javax.mail.URLName 无法解析用户名和密码