Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.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
javax.naming.NoInitialContextException Apache Commons api_Java_Apache_Email - Fatal编程技术网

javax.naming.NoInitialContextException Apache Commons api

javax.naming.NoInitialContextException Apache Commons api,java,apache,email,Java,Apache,Email,我正在使用ApacheCommonsEmailAPI尝试以下代码,它在上下文中抛出错误。有什么帮助吗 import java.util.Properties; import javax.mail.PasswordAuthentication; import javax.mail.Session; import org.apache.commons.mail.EmailException; import org.apache.commons.mail.SimpleEmail; publi

我正在使用ApacheCommonsEmailAPI尝试以下代码,它在上下文中抛出错误。有什么帮助吗

import java.util.Properties;

import javax.mail.PasswordAuthentication;
import javax.mail.Session;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;


public class email {

    /**
     * @param args
     * @throws EmailException 
     */
    public static void main(String[] args) throws EmailException {
        // TODO Auto-generated method stub
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
        Session session = Session.getInstance(props,
                  new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("email@gmail.com", "password");
                    }
                  });
SimpleEmail se = new SimpleEmail();
se.addTo("email@gmail.com");
se.setFrom("email@gmail.com");
se.setSubject("Test email");
se.setMsg("Hi there");
se.send();

    }

}
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.lookup(Unknown Source)
    at javax.xml.registry.samples.SimpleClient.doit(Unknown Source)
    at javax.xml.registry.samples.SimpleClient.main(Unknown Source)

它抛出以下错误。我应该在哪里/采取什么措施来克服这一问题?这方面有什么帮助吗

import java.util.Properties;

import javax.mail.PasswordAuthentication;
import javax.mail.Session;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;


public class email {

    /**
     * @param args
     * @throws EmailException 
     */
    public static void main(String[] args) throws EmailException {
        // TODO Auto-generated method stub
        Properties props = new Properties();
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.starttls.enable", "true");
        props.put("mail.smtp.host", "smtp.gmail.com");
        props.put("mail.smtp.port", "587");
        Session session = Session.getInstance(props,
                  new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("email@gmail.com", "password");
                    }
                  });
SimpleEmail se = new SimpleEmail();
se.addTo("email@gmail.com");
se.setFrom("email@gmail.com");
se.setSubject("Test email");
se.setMsg("Hi there");
se.send();

    }

}
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial
    at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
    at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)
    at javax.naming.InitialContext.lookup(Unknown Source)
    at javax.xml.registry.samples.SimpleClient.doit(Unknown Source)
    at javax.xml.registry.samples.SimpleClient.main(Unknown Source)

您正在混合使用
javax.mail
Apache Commons电子邮件。此代码应适用于您:

public static void main(String[] args) {
{
    try
    {
        Email se = new SimpleEmail();

        se.setHostName("smtp.googlemail.com");
        se.setSmtpPort(465);
        se.setAuthenticator(new DefaultAuthenticator("email@gmail.com", "password"));
        se.setSSLOnConnect(true);


        se.addTo("email@gmail.com");
        se.setFrom("email@gmail.com");
        se.setSubject("Test email");
        se.setMsg("Hi there");
        se.send();
    }
    catch(EmailException e) {
        System.out.println("Uh oh! It doesn't work!");
    }
}
更多信息:


您的
doit
方法看起来怎么样?
javax.xml.registry.samples.SimpleClient
与您发布的代码相同吗?我只有这段代码?我错过什么了吗?什么是doit方法?你能帮忙吗?我想你用错班级了吧?如何运行Java类?您应该使用
email
类,而不是
javax.xml.registry.samples.SimpleClient
。请检查您的堆栈跟踪。不确定从何处提取它…但我似乎通过将SimpleMail更改为电子邮件解决了此问题,并获得了一个新的“原因:javax.mail.MessagineException:未知SMTP主机:SMTP.gmail.com;”