2013-05-28 4 views
0

아파치 커먼즈 이메일 API로 다음 코드를 시도해 본다. 어떤 도움?javax.naming.NoInitialContextException 아파치 커먼즈 api

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 protected]", "password"); 
        } 
        }); 
SimpleEmail se = new SimpleEmail(); 
se.addTo("[email protected]"); 
se.setFrom("[email protected]"); 
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) 

+0

어떻게'doit' 방법이 생겼는데? 'javax.xml.registry.samples.SimpleClient'는 게시하는 코드와 동일합니까? – longhua

+0

나는이 코드를 가지고 있습니까? 나는 무엇인가 놓친다? doit 방법은 무엇입니까? 도울 수 있니? – user1411601

+0

잘못된 수업을 사용하고 계신가요? Java 클래스를 어떻게 실행합니까? javax.xml.registry.samples.SimpleClient가 아닌'email' 클래스를 사용해야합니다. 스택 추적을 확인하십시오. – longhua

답변

1

당신은 javax.mail아파치 코 몬즈 이메일 혼합된다. 이 코드는 당신을 위해 일해야합니다

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

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


     se.addTo("[email protected]"); 
     se.setFrom("[email protected]com"); 
     se.setSubject("Test email"); 
     se.setMsg("Hi there"); 
     se.send(); 
    } 
    catch(EmailException e) { 
     System.out.println("Uh oh! It doesn't work!"); 
    } 
} 

상세 정보 :

Apache Commons Email Userguide

+0

완벽한, 감사합니다! 작동합니다! – user1411601

+0

@ user1411601 여러분은 환영합니다. 커뮤니티에 승인 된 것으로 표시해야합니다! –

+0

완료, 다시 한 번 감사드립니다! – user1411601

관련 문제