gpt4 book ai didi

javax.命名.NameNotFoundException : Unable to find mail

转载 作者:行者123 更新时间:2023-11-30 09:01:27 27 4
gpt4 key购买 nike

我在我的 context.xml 中设置了邮件资源定义

<Resource
name="MyMailSession"
auth="Container"
type="javax.mail.Session"
mail.smtp.sendpartial="true"
mail.debug="true"
mail.smtp.host="myhost.hosting.com"
/>

还有一个查找邮件 session 的 JNDI 的邮件实用程序:

 public int send() throws Exception {
int msgCount = 0; //number of recipients
Context ctx = new InitialContext();
Session session = (Session) ctx.lookup("java:comp/env/mail/MyMailSession");
MimeMessage message = new MimeMessage(session);

但出现以下异常:

javax.naming.NameNotFoundException: Name [mail/MyMailSession] is not bound in this Context. Unable to find [mail].
at org.apache.naming.NamingContext.lookup(NamingContext.java:820)
at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
...

当涉及到邮件时,邮件标签作为资源名称的前缀是必要的还是更像是一种约定? (即,查找用户交易将设置为 java:comp/UserTransaction)

最佳答案

试试

<Resource
name="mail/MyMailSession"
auth="Container"
type="javax.mail.Session"
mail.smtp.sendpartial="true"
mail.debug="true"
mail.smtp.host="myhost.hosting.com"
/>

代替

<Resource
name="MyMailSession"
auth="Container"
type="javax.mail.Session"
mail.smtp.sendpartial="true"
mail.debug="true"
mail.smtp.host="myhost.hosting.com"
/>

编辑: 在这种情况下,这是必要的,因为您在此行中将上下文称为 mail/MyMailSession:

Session session = (Session) ctx.lookup("java:comp/env/mail/MyMailSession");

java:comp/env/后面的必须是您的资源名称。

关于javax.命名.NameNotFoundException : Unable to find mail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26413834/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com