javax.naming.NoInitialContextException Apache Commons api
我正在使用ApacheCommonsEmailAPI尝试以下代码,它在上下文中抛出错误。有什么帮助吗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
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;”