Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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
发送邮件代码不适用于JavaEE5Web项目_Java_Email_Java Ee 5 - Fatal编程技术网

发送邮件代码不适用于JavaEE5Web项目

发送邮件代码不适用于JavaEE5Web项目,java,email,java-ee-5,Java,Email,Java Ee 5,我使用的是myeclipse 7,我在其中添加了我所需要的java EE 5库。如果我在应用程序外部添加mail.jar,它将从java EE 5库调用javaee.jar。它没有使用mail.jar。如果我删除java EE 5库,那么它可以工作,但我需要java EE 5库。如何使用JavaEE5库的javaee.jar发送邮件 如果需要,下面是我的sed邮件hava代码 String d_email = "email@gmail.com", d_pass

我使用的是myeclipse 7,我在其中添加了我所需要的java EE 5库。如果我在应用程序外部添加mail.jar,它将从java EE 5库调用javaee.jar。它没有使用mail.jar。如果我删除java EE 5库,那么它可以工作,但我需要java EE 5库。如何使用JavaEE5库的javaee.jar发送邮件

如果需要,下面是我的sed邮件hava代码

 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)
线程“main”java.lang.NoClassDefFoundError中的异常:com/sun/mail/util/LineInputStream 位于javax.mail.Session.loadProvidersFromStream(Session.java:928) 在javax.mail.Session.access$000(Session.java:174) 在javax.mail.Session$1.load(Session.java:870) 在javax.mail.Session.loadResource(Session.java:1084) 位于javax.mail.Session.loadProviders(Session.java:889) 在javax.mail.Session.(Session.java:210) 位于javax.mail.Session.getInstance(Session.java:232) 位于com.ctn.origin.connection.Main(Main.java:35) 位于com.ctn.origin.connection.Main.Main(Main.java:55)
您应该而不是手动向项目中添加特定于容器的库,如
javaee.jar
。只有在不同品牌/版本的容器上部署和运行项目时,才会导致运行时问题。javaee.jar是Glassfish特有的。由于Glassfish本身已经附带了一个
mail.jar
,这表明您的目标运行时根本不是Glassfish。可能是Tomcat或JBoss之类的东西

如果您这样做是为了克服项目编译错误,那么您应该以不同的方式解决这个问题。我不做MyEclipse,但我相信这与Eclipse非常相似,因此基于Eclipse的答案也适用于MyEclipse:右键单击项目,选择属性,转到目标运行时部分,并从列表中选择目标运行时(您想要使用的servletcontainer)。这样,Eclipse将以正确的方式自动将其库包含在项目的构建路径中

另见:

它以什么方式不起作用?它会给你编译错误,运行时异常,不会产生预期的结果吗?它会给你运行时错误,我的问题是描述错误