我正在使用javamail的SMTPTransport.sendMessage方法在我的Android应用程序中发送电子邮件,一切正常......但是当我开始发送消息并在中间时,我禁用了我的wifi,它被卡住了。我现在已经等了1个多小时了,它仍然卡住了;没有异常被抛出......任何想法如何处理这种情况?
修改
我添加了超时
props.put("mail.smtp.connectiontimeout", "3000");
props.put("mail.smtp.timeout", "3000");
似乎不起作用......我已经模拟了一个连接丢失,现在它已经是5分钟了,它仍处于发送状态并且还没有超时
edit2:
16分钟后发生超时/错误(甚至不确定是否超时)
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
编辑3:
它并不总是抛出异常......我已经模拟了连接丢失,1小时后仍然没有例外......它处于发送状态.....还没有返回:(
答案 0 :(得分:2)
当前版本的JavaMail只处理读取超时,因为这是JDK支持的所有内容。对于下一个JavaMail版本,我添加了对写入超时的支持。您可以使用maven.java.net存储库中提供的JavaMail的1.5.1-SNAPSHOT版本来试验它。您需要设置“mail.smtp.writetimeout”属性。不知道这是否会对Android有所帮助,因为它不是真正的Java ......