2012-10-17 2 views
0

저는 학교 프로젝트 용 프로그램에서 이메일을 보내기 위해 JavaMail을 사용하려고했습니다. 나는 그것을 작동하게 만들었지 만 지금은 가끔씩 만 작동합니다. 정말로, 내가 어디에 있는지는 (학교, 집, 카페에서) 때로는 효과가 있고 때로는 효과가 없다.JavaMail이 가끔 Gmail에 연결하는 경우가 있습니다. 무작위로 보입니다

내가 오류 메시지는 다음과 같습니다 javax.mail.MessagingException : 스레드 "AWT-EventQueue의-0"java.lang.RuntimeException가에서

예외는 SMTP 호스트에 연결할 수 없습니다 : smtp.gmail합니다. com, 포트 : 465; 상자의 예외는 다음과 같습니다 java.net.ConnectException : 연결 시간 초과 : varsling.SendEmail.sendEmail에서 를 연결 (SendEmail.java:40는)

이상한 것은 내가의 코드를 변경 아니에요이다 어쨌든. JavaMail과 Gmail 연결에 문제가 있습니까? 내가 어떤 웹 사이트의 예에서 볼 무엇을 (어쨌든

, 여기에 내 코드 : 정말 아무것도에 setFrom()을 변경하는 데 도움이되지 않습니다

import java.util.Properties; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class SendEmail { 

public void sendEmail(String text, String to, String username, String password) { 
    Properties props = new Properties(); 
    props.put("mail.smtp.host", "smtp.gmail.com"); 
    props.put("mail.smtp.socketFactory.port", "465"); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.port", "465"); 

    Session session = Session.getDefaultInstance(props, 
    new javax.mail.Authenticator() { 
     protected PasswordAuthentication getPasswordAuthentication() { 
      return new PasswordAuthentication(username, password); 
     } 
    }); 

    try { 
     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO, 
         InternetAddress.parse(to)); 
     message.setSubject("Danger!"); 
     message.setText(text); 

     Transport.send(message); 
     System.out.println("Sent"); 
    } catch (MessagingException e) { 
     throw new RuntimeException(e); 
    } 
} } 

, 그래서 나는 기본값으로 넣어 몇 주 전).

수정 프로그램이있는 사람이 있습니까? : S

고마워요!

+0

나를 위해 괜찮아 보입니다. 그리고 시간에 따라 보이는 것은 없습니다. 나는 통신 실패를 지적 할 것이다. 실패하면 'telnet smtp.gmail.com 465'을 실행하고 서버가 응답하는지 또는 연결이 거부/시간 초과되었는지 확인하십시오. – SJuan76

답변

0

위의 설명에서 알 수 있듯이 JavaMail 문제가 아닌 네트워킹 문제인 것처럼 들립니다. 연결 기능을 방해하는 방화벽 또는 바이러스 백신 소프트웨어가 있습니까?

this JavaMail FAQ entry of common mistakes을 읽고 코드를 정리하고 싶지만 문제와 관련이 있는지 의심 스러울 수도 있습니다.

+0

답변 해 주셔서 감사합니다. 둘 다 :) 나는 제어판에서 텔넷 클라이언트를 활성화하고 SJuan76이 말한 것을 테스트했다 : cmd (windows 7)에서 "telnet smtp.gmail.com 465". 결과 : "포트 465의 호스트에 연결할 수 없습니다 : 연결할 수 없습니다"- 직접 변환되었습니다. –

+0

방금 ​​방화벽을 끄었지만 도움이되지 않았습니다. 여전히 smtp에 연결할 수 없습니다 : S –

+0

텔넷을 연결할 수없는 경우보다 기본적인 네트워킹 문제가 있습니다. 아마도 당신은 연결할 수 없도록하는 네트워크 방화벽 뒤에있을 것입니다. "ping smtp.gmail.com"을 실행하여 호스트에 대한 경로가 있는지 확인하십시오. –

관련 문제