在JBoss中配置电子邮件 - JNDI资源未获得正确的配置

时间:2014-04-10 16:07:49

标签: java email jboss

我正在尝试配置我的应用程序以在JBoss 7.10.GA中发送电子邮件。一切看起来都配置正确,但是当我测试我的代码时,它会抛出一个错误:

javax.mail.MessagingException:无法连接到SMTP主机:localhost,port:25;

它似乎没有在我的standalone.xml文件中找到正确的电子邮件配置,因为它只是默认为localhost端口25.从我读过的所有表单中,这是所有需要完成的配置,但我必须是遗失了什么。

  <subsystem xmlns="urn:jboss:domain:mail:1.1">
        <mail-session jndi-name="java:jboss/mail/Gmail">
            <smtp-server ssl="true" outbound-socket-binding-ref="mail-gmail-smtp">
                <login name="email@gmail.com" password="password"/>
            </smtp-server>
        </mail-session>
    </subsystem>
  <socket-binding-group...
      <outbound-socket-binding name="mail-gmail-smtp">
          <remote-destination host="smtp.gmail.com" port="465"/>
      </outbound-socket-binding>
  </socket-binding-group>

我在班上有这个:

import javax.annotation.Resource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServlet;

public class SendEmail extends HttpServlet {       
    @Resource(lookup = "java:jboss/mail/Gmail")
    private Session mailSession;

    public SendEmail() {
        try {
            MimeMessage m = new MimeMessage(mailSession);
            Address from = new InternetAddress("email@gmail.com");
            Address[] to = new InternetAddress[] { new InternetAddress(
                "email@gmail.com") };
            m.setFrom(from);
            m.setRecipients(Message.RecipientType.TO, to);
            m.setSubject("Google JavaMail Test");
            m.setContent("Test from inside JBoss AS7 Server", "text/plain");
            Transport.send(m);           
        } catch (javax.mail.MessagingException e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我发现解决方案使其在本地工作,但在部署到OpenShift时没有,这是由于找不到资源名称。

我删除了:

@Resource(lookup = "java:jboss/mail/Gmail")

并补充说:

InitialContext ic = new InitialContext();       
mailSession = (Session)ic.lookup("java:jboss/mail/Gmail");

这是我引用的文章

https://java.net/jira/browse/GLASSFISH-13836

更新: 发送电子邮件适用于我的本地配置,但当我将其部署到OpenShift时,我收到以下错误:

javax.naming.NameNotFoundException:名称[jboss / mail / Gmail]未在此上下文中绑定。无法找到[jboss]。

我认为这是因为它在我的本地副本上设置并且没有转移到OpenShift。现在我需要找到我需要在.openshift / config目录中添加这些声明的文件。有人知道吗?