2013-06-30 4 views
0

javamail의 SMTPTransport.sendMessage 메소드를 사용하여 내 안드로이드 앱에서 이메일을 보내고 모든 것이 잘 작동하지만 ... 메시지를 보내고 중간에 wifi를 사용하지 않도록 설정하면 도착합니다. 붙어있어. 나는 지금 1 시간 이상 기다렸으나 여전히 고착되어있다. 예외가 발생하지 않습니다 ...이 상황을 어떻게 처리 할 생각입니까?SMTPTransport sendMessage 연결이 끊어졌습니다.

편집 :

가 작동하지 않는 것 ... 나는 연결 손실을 시뮬레이션하고 이미 지금 5mins 그리고 그것은 상태를 전송 여전히 시간 제한

props.put("mail.smtp.connectiontimeout", "3000"); 
props.put("mail.smtp.timeout", "3000"); 
을 추가 한

그리고 시간이 초과되지 않은

EDIT2 :

시간 제한/오류 (이 타임 아웃 인 경우도 모르겠 음) 16mins

06-30 18:47:27.722: I/System.out(15906): javax.net.ssl.SSLException: Write error: ssl=0xdf8268: I/O error during system call, Invalid argument 

편집 세 이후에 발생했습니다 : 항상 예외를 throw하지 않습니다

... 난 연결 손실 후 시뮬레이션 한 1 시간은 아직 ...이 상태를 보내는 예외는 아닙니다 ..... 아직 반환하지 않은 :(

답변

2

JavaMail에의 현재 버전은 읽기에 대한 제한 시간을 처리, 즉 JDK가 지원하는 모든 때문에. 다음 JavaMail 릴리스에서는 쓰기 타임 아웃에 대한 지원을 추가했습니다. maven.java.net 저장소에있는 JavaMail의 1.5.1-SNAPSHOT 릴리스를 사용하여 시험해 볼 수 있습니다. "mail.smtp.writetimeout"속성을 설정해야합니다. 정말 자바하지 이후이 안드로이드에 도움이 될 것입니다 경우

+0

확인을 들으 나는 그것을 시도 줄 것입니다 ... 몰라! smtp.timeout가 타임 아웃을 읽기 당신은 좋은 가치를 추천 할 수 있습니까? 내가 3000로 설정하고 난 메일이 실제로 성공적으로 전송도 시간 초과 오류를 많이 얻고있다 – yeahman

+0

확인을 들으 내가 그것을 시도 줄 것이다 (SMTP의 응답 시간이 초과됩니다 및 오류가 발생합니다)! – yeahman

+0

메일 서버가 모두 사용중인 경우 3 초가 매우 짧은 시간 제한입니다. 최선의 결과를 찾으려면 실험을해야 할 것입니다. 매우 드문 경우에만 트리거해야하기 때문에 제한 시간은 응용 프로그램이 허용 할 수있는 최대 크기 여야합니다. 메일 서버가 얼마나 빨리 ** 원하는지 또는 얼마나 빨리 생각해야하는지에 근거해서는 안됩니다. –

관련 문제