2012-11-16 3 views
1

javamail을 설치하여 socks 프록시를 실행하도록 설정했지만 통과하지는 않습니다. 나는 mail.smtp.socks.host와 mail.smtp.socks.port를 모두 설정하려고 시도했지만 메일 호스트로 직접 가게된다. 나는 아주 기본적인 것을 놓치고있는 것처럼 느껴집니다. 어떤 도움을 주시면 감사하겠습니다. 내 재산은 다음과 같습니다.양말 프록시를 무시하는 javamail

props.setProperty("mail.smtp.host", this.smtpHost); 
props.setProperty("mail.smtp.port", Integer.toString(this.smtpPort)); 
props.setProperty("mail.smtp.user", this.smtpUser); 
props.setProperty("mail.smtp.auth", "true"); 
props.setProperty("mail.transport.protocol", "smtp"); 
props.setProperty("mail.smtp.starttls.enable", Boolean.toString(this.smtpTLS)); 
props.setProperty("mail.debug", "true"); 

if (this.useSOCKSProxy) { 
    logger.info("Using proxy"); 
    props.setProperty("mail.smtp.socks.host", "127.0.0.1"); 
    props.setProperty("mail.smtp.socks.port", Integer.toString(1080)); 
    props.setProperty("mail.smtps.socks.host", this.socksProxyHost); 
    props.setProperty("mail.smtps.socks.port", Integer.toString(this.socksProxyPort)); 
    props.setProperty("proxySet", "true"); 
    props.setProperty("socksProxyHost", this.socksProxyHost); 
    props.setProperty("socksProxyPort", Integer.toString(this.socksProxyPort)); 
} 

//Session session = Session.getInstance(props, new SmtpAuthenticator(this.smtpUser,this.smtpPassword)); 
Session session = Session.getDefaultInstance(props, 
    new Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
     return new PasswordAuthentication(smtpUser, smtpPassword); 
     } 
    }); 

//Session session = Session.getInstance(props, null); 
session.setDebugOut(System.out); 
session.setDebug(true); 
//Transport tr = session.getTransport("smtp"); 
//tr.connect(); 
//tr.connect(this.smtpHost,this.smtpPort, this.smtpUser, this.smtpPassword); 

Message msg = new MimeMessage(session); 
msg.setFrom(new InternetAddress(this.smtpFrom)); 
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email)); 
msg.setSubject(subject); 
msg.setText(msgToSend.toString()); 
msg.saveChanges(); 

Transport.send(msg); 

답변

1

common mistakes으로 시작합니다.

그래도 문제가 해결되지 않으면 디버깅 출력을 게시하십시오. 추가 디버깅 출력을 얻으려면 시스템 등록 정보 "mail.socket.debug"를 "true"로 설정하십시오.

어떤 JavaMail 버전을 사용하고 있습니까? JDK는 무엇입니까?

"props"가 System.getProperties()에서 오는 경우가 아니면 "socksProxyHost"를 설정해도 아무런 효과가 없습니다. System 속성으로 설정하면 JavaMail 양말 속성이 필요하지 않습니다.

+0

일반적인 pebkac 문제가 발생했습니다. 1.4.5가 아닌 javamail 1.4.2를 실행했습니다. mail.socket.debug 시스템 설정은 매우 유용했습니다. – mlbiam

+0

@ mlbiam 답변으로 받아 들여서는 안됩니다. 유용성을 위해 upvoted, 네,하지만 그것은 당신의 질문에 대답하지 않습니다! –

0

당신은 빌이 언급 한 일반적인 실수를 포함, 속성의 올바른 조합을 알아 내려고 시도 할 수 있습니다, 또는 당신은 또한 쉬운 방법을 가서 Simple Java Mail (오픈 소스)를 할 수 있습니다 당신을 위해 그것을 알아낼 :

귀하의 예를 다음과 같이 변환 :

더 이상 속성이나 JavaMail API를 다루지 않아도됩니다. 필요한 경우 인증 된 프록시를 사용할 수도 있습니다.