Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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
Sun Java System Application Server 9.1和Postfix mail Server的javax.mail.AuthenticationFailedException_Exception_Glassfish_Ejb_Jakarta Mail_Postfix Mta - Fatal编程技术网

Sun Java System Application Server 9.1和Postfix mail Server的javax.mail.AuthenticationFailedException

Sun Java System Application Server 9.1和Postfix mail Server的javax.mail.AuthenticationFailedException,exception,glassfish,ejb,jakarta-mail,postfix-mta,Exception,Glassfish,Ejb,Jakarta Mail,Postfix Mta,在我的应用程序中,我有以下消息驱动Bean连接到Postfix SMTP服务器以向用户发送电子邮件: @MessageDriven(mappedName = "jms/OutgoingEmailQueue", activationConfig = { @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), @ActivationConfigP

在我的应用程序中,我有以下消息驱动Bean连接到Postfix SMTP服务器以向用户发送电子邮件:

@MessageDriven(mappedName = "jms/OutgoingEmailQueue", activationConfig =  {
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class OutgoingEmailBean implements MessageListener {
    //Resource
    @Resource(name = "mail/MailSession")
    private Session mailSession;

    public void onMessage(Message message) {
        try {
            ....
            //Create the email
            javax.mail.Message email = new MimeMessage(mailSession);
            ....
            //Send the email
            Transport.send(email);
        } catch (Exception e) {
            System.out.println(e.toString());
        }
    }
}
当我在笔记本电脑上使用带有GlassFish 2.1的NetBeans部署此应用程序时,它可以连接到SMTP服务器并完美地发送电子邮件。但是,当我将所有设置复制到在线Sun Java System Application Server 9.1并部署我的应用程序时,我的应用程序不再能够发送电子邮件。相反,我在“Transport.send(email)”行得到了异常javax.mail.AuthenticationFailedException。在服务器日志中,我看到以下行:

[#|2011-08-01T15:18:02.077+0400|SEVERE|sun-appserver9.1|ejb.Mailing.OutgoingEmailBean|_ThreadID=34;_ThreadName=p: thread-pool-1; w: 665;_RequestID=52699cfe-71a2-46be-83b0-f3af23d74c0c;|The log message is null.
javax.mail.AuthenticationFailedException
    at javax.mail.Service.connect(Service.java:319)
    at javax.mail.Service.connect(Service.java:169)
    at javax.mail.Service.connect(Service.java:118)
    at javax.mail.Transport.send0(Transport.java:188)
    at javax.mail.Transport.send(Transport.java:118)
    at ejb.Mailing.OutgoingEmailBean.onMessage(OutgoingEmailBean.java:110)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.sun.enterprise.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1067)
    at com.sun.enterprise.security.SecurityUtil.invoke(SecurityUtil.java:176)
    at com.sun.ejb.containers.BaseContainer.invokeTargetBeanMethod(BaseContainer.java:2895)
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:3986)
    at com.sun.ejb.containers.MessageBeanContainer.deliverMessage(MessageBeanContainer.java:1111)
    at com.sun.ejb.containers.MessageBeanListenerImpl.deliverMessage(MessageBeanListenerImpl.java:74)
    at com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:179)
    at $Proxy93.onMessage(Unknown Source)
    at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:258)
    at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:76)
    at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
|#]
我花了两天时间四处查看,以确保GlassFish 2.1的所有本地设置与在线appserver的设置相同,但我仍然无法解决问题。如果有人能就如何解决这个问题给我一个建议,我将不胜感激

致以最良好的祝愿


James Tran

我发现在后缀配置中,“mynetworks”属性不包括我域的IP地址。添加IP地址后,我的应用程序可以正常发送电子邮件。

是否设置了所有属性,如
mail.smtp.user
mail.smtp.host
mail.smtp.port
?-在使用静态传输调用时,必须设置这些参数。有关属性列表,请参见SMTP包摘要:我没有在代码中明确添加这些属性,但在应用服务器上的“邮件会话”设置中,我已经设置了3个强制属性:“邮件主机”、“默认用户”和“默认返回地址”以及3个附加属性:“邮件SMTP端口”、“邮件SMTP密码”和“邮件smtp验证”。如果我遗漏了什么,请告诉我。