Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 带Exchange的Glassfish电子邮件配置_Jakarta Ee_Glassfish 3 - Fatal编程技术网

Jakarta ee 带Exchange的Glassfish电子邮件配置

Jakarta ee 带Exchange的Glassfish电子邮件配置,jakarta-ee,glassfish-3,Jakarta Ee,Glassfish 3,我已经找到了很多关于配置Glassfish用于电子邮件的参考资料,但是我还不能解决我自己的问题,我希望有人能提供帮助 我已经在Glassfish 3.12控制台中配置了JavaMail会话,包括mailhost、用户、发送者地址和描述。传输协议设置为SMTP,我添加了mail.SMTP.host(和mail.SMTP.auth=false)属性 我用来发送邮件的代码如下: public class JndiMail { @Resource(name = "mail/[my-email]"

我已经找到了很多关于配置Glassfish用于电子邮件的参考资料,但是我还不能解决我自己的问题,我希望有人能提供帮助

我已经在Glassfish 3.12控制台中配置了JavaMail会话,包括mailhost、用户、发送者地址和描述。传输协议设置为SMTP,我添加了mail.SMTP.host(和mail.SMTP.auth=false)属性

我用来发送邮件的代码如下:

public class JndiMail {
    @Resource(name = "mail/[my-email]")
    private Session mailSession;

    public void sendMessage() {
        Message msg = new MimeMessage(mailSession);
        try {
          msg.setSubject("[app] Email Alert");
          msg.setRecipient(RecipientType.TO,
            new InternetAddress("user@domain",
            "User name"));
          msg.setText("Hello ");
          Transport.send(msg);
        }
        catch(MessagingException me) {
          System.out.println(me.toString());
        }
        catch(UnsupportedEncodingException uee) {
        }
      }
}
每次应用程序发送电子邮件时,我都会收到一条日志消息,表示本地主机已拒绝该电子邮件。我正在尝试使用远程exchange服务器,而不是本地主机。我不明白为什么远程电子邮件服务器没有被访问?我意识到这应该是相当直接的,所以如果我错过了什么,我道歉

这些是玻璃鱼原木:

[#|2013-03-26T10:00:39.334+1100|INFO|glassfish3.1.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=29;_ThreadName=Thread-2;|DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]|#]

[#|2013-03-26T10:00:39.334+1100|INFO|glassfish3.1.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=29;_ThreadName=Thread-2;|DEBUG SMTP: useEhlo true, useAuth false|#]

[#|2013-03-26T10:00:39.334+1100|INFO|glassfish3.1.1|javax.enterprise.system.std.com.sun.enterprise.server.logging|_ThreadID=29;_ThreadName=Thread-2;|DEBUG SMTP: trying to connect to host "localhost", port 25, isSSL false|#]

我已经解决了这个问题。解决办法相当直截了当。在Glassfish中配置Javamail资源时,在JNDI名称上使用“mail/”前缀非常重要。我以为Glassfish加了这个。我通过从上述代码中删除注入并在try-catch中包含JNDI查找找到了解决方案:

try {
    InitialContext ctx = new InitialContext();  
Session session = (Session) ctx.lookup("mail/MyEmail"); 
 Message msg = new MimeMessage(session);

请发布您是如何在Glassfish上配置邮件会话的。来自Exchange的错误消息确切地说是什么?我通过管理控制台创建了一个JavaMail资源。我使用了我的电子邮件的名称(如上所述)。我确实向资源设置mail.smtp.host和mail.smtp.auth添加了其他属性。调试也已打开。我无法从我现在所在的位置访问Glassfish日志,但是日志消息的形式是localhost的“no response from localhost”?这是可疑的,正如您提到的,您正在尝试连接到远程主机。您确定在Glassfish的“邮件主机”字段中输入了正确的值吗?顺便说一句,你检查过你的服务器和Exchange之间的连接了吗?刚刚回到服务器并添加了实际的日志。注入仍然可以工作吗?我正在尝试这个,但我仍然得到localhost:25