отправить почтовый код не работает для веб-проекта Java EE 5 - PullRequest
2 голосов
/ 01 июня 2011

Я использую myeclipse 7, где я добавил библиотеки java EE 5, которые мне нужны. Если я добавляю mail.jar извне в приложение, он вызывает javaee.jar из библиотек java EE 5. Он не использует почту .jar. Если я удаляю библиотеки Java EE 5, то он работает, но мне требуются библиотеки Java EE 5. Как я могу отправить почту, используя javaee.jar из библиотеки Java EE 5?

Если это требуется ниже, мой хава-код для sed mail

 String  d_email = "email@gmail.com",
                d_password = "pass",
                d_host = "smtp.gmail.com",
                d_port  = "465",
                m_to = "email@gmail.com",
                m_subject = "Testing",
                m_text = "This is the testing email.";

        public Main()
        {
            Properties props = new Properties();
            props.put("mail.smtp.user", d_email);
            props.put("mail.smtp.host", d_host);
            props.put("mail.smtp.port", d_port);
            props.put("mail.smtp.starttls.enable","true");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.debug", "true");
            props.put("mail.smtp.socketFactory.port", d_port);
            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
            props.put("mail.smtp.socketFactory.fallback", "false");

            SecurityManager security = System.getSecurityManager();

            try
            {
                Authenticator auth = new SMTPAuthenticator();
                Session session = Session.getInstance(props, auth);
                session.setDebug(true);

                MimeMessage msg = new MimeMessage(session);
                msg.setText(m_text);
                msg.setSubject(m_subject);
                msg.setFrom(new InternetAddress(d_email));
                msg.addRecipient(Message.RecipientType.TO, new InternetAddress(m_to));
                Transport.send(msg);

                System.out.println("Mail Sent");
            }
            catch (Exception mex)
            {
                mex.printStackTrace();
            } 
        }

    public static void main(String[] args)
    {
        Main blah = new Main();
    }

    private class SMTPAuthenticator extends javax.mail.Authenticator
    {
        public PasswordAuthentication getPasswordAuthentication()
        {
            return new PasswordAuthentication(d_email, d_password);
        }
    }

Ошибка:

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
    at javax.mail.Session.loadProvidersFromStream(Session.java:928)
    at javax.mail.Session.access$000(Session.java:174)
    at javax.mail.Session$1.load(Session.java:870)
    at javax.mail.Session.loadResource(Session.java:1084)
    at javax.mail.Session.loadProviders(Session.java:889)
    at javax.mail.Session.<init>(Session.java:210)
    at javax.mail.Session.getInstance(Session.java:232)
    at com.ctn.origin.connection.Main.<init>(Main.java:35)
    at com.ctn.origin.connection.Main.main(Main.java:55)

1 Ответ

1 голос
/ 01 июня 2011

Вы должны , а не вручную добавить библиотеки, относящиеся к контейнерам, такие как javaee.jar, в ваш проект.Это может привести к проблемам во время выполнения, если вы развернете и запустите проект на контейнере другой марки / версии.javaee.jar относится только к Glassfish.Поскольку Glassfish уже поставляется с mail.jar, это говорит о том, что ваша целевая среда выполнения вообще не Glassfish.Вероятно, это Tomcat, JBoss или что-то в этом роде.

Если вы сделали это, чтобы преодолеть ошибки компиляции проекта, вам следовало бы решить это иначе.Я не делаю MyEclipse, но я считаю, что это очень похоже на Eclipse, поэтому этот ответ на основе Eclipse должен работать и для MyEclipse: щелкните правой кнопкой мыши проект, выберите Свойства , перейдите к Target Runtime и выберите целевую среду выполнения (сервлет-контейнер, который вы хотите использовать) из списка.Таким образом, Eclipse автоматически включит свои библиотеки в путь сборки проекта.

См. Также:

...