0

我正在使用 javamail 的 SMTPTransport.sendMessage 方法在我的 android 应用程序中发送电子邮件,一切正常……但是当我开始发送消息时,在中间,我禁用了我的 wifi,它卡住了。我已经等了1个多小时了,还是卡住了;不抛出异常......知道如何处理这种情况吗?

编辑:

我添加了超时

props.put("mail.smtp.connectiontimeout", "3000");
props.put("mail.smtp.timeout", "3000");

似乎不起作用...我已经模拟了连接丢失,现在已经 5 分钟了,它仍然处于发送状态并且没有超时

编辑2:

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小时后,仍然没有异常......它处于发送状态......并且尚未返回:(

4

1 回答 1

2

当前版本的 JavaMail 仅处理读取超时,因为这就是 JDK 所支持的全部。对于下一个 JavaMail 版本,我添加了对写入超时的支持。您可以使用 maven.java.net 存储库中提供的 1.5.1-SNAPSHOT 版本的 JavaMail 进行试验。您需要设置“mail.smtp.writetimeout”属性。不知道这是否会对您在 Android 上有所帮助,因为它不是真正的 Java ......

于 2013-07-01T22:17:12.293 回答