javax.mail.AuthenticationFailedException с Sun Java System Application Server 9.1 и почтовым сервером Postfix - PullRequest
0 голосов
/ 01 августа 2011

В моем приложении у меня есть следующий компонент Message Driven Bean для подключения к SMTP-серверу Postfix для отправки электронных писем пользователю:

@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());
        }
    }
}

Когда я развертываю это приложение, используя NetBeans с GlassFish 2.1 на своем ноутбуке, оно может подключаться к SMTP-серверу и идеально отправлять электронную почту. Однако, когда я копирую все настройки на онлайн-сервер приложений Sun Java System 9.1 и внедряю свое приложение, мое приложение больше не может отправлять электронные письма. Вместо этого я получил исключение javax.mail.AuthenticationFailedException в строке «Transport.send (email)». В журнале сервера я увидел такие строки:

[#|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)
|#]

Я потратил 2 дня на поиски, чтобы убедиться, что все локальные настройки GlassFish 2.1 идентичны настройкам онлайн-сервера приложений, но я все еще не могу решить проблему. Буду очень признателен, если кто-нибудь даст мне совет, как решить эту проблему.

С уважением,

Джеймс Тран

1 Ответ

0 голосов
/ 14 августа 2011

Я обнаружил, что в конфигурации Postfix свойство mynetworks не включает IP-адрес моего домена.После добавления IP-адреса мое приложение уже может отправлять электронные письма.

...