Android javamail发送QQ邮件

在Android应用中使用javamail发送邮件时遇到NoClassDefFoundError异常,通过检查jar包未解决问题。但在主线程运行时出现NetworkOnMainThreadException。将邮件发送放入子线程后异常消失,成功发送邮件。然而,第二天发现程序无法正常工作,经排查发现是由于QQ邮箱启用了登录保护导致。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写了一个javamail Demo准备用于我的Android程序 我用junit和mian方法都可以顺利发出邮件

问题:

后来把它加入android程序中就出现了异常 NoClassDefFoundError 我第一反应就是jar包问题 反复排查jar包

没有发现问题 奇怪的地方是 (我调用main方法执行程序是可以成功发送邮件的,就是在Android 程序中调用会有这个异常)

解决:

最后把additionnal.jar 引入项目 这时异常改变了 NetworkOnMainThreadException
然后把这段程序放入线程中执行 这时就不再有问题

总结:

NoClassDefFoundError 虽然编译时没用到某jar包 但是运行时可能会需要
NetworkOnMainThreadException 如果在主线程中请求网络操作,将会抛出此异常

 new Thread(new Runnable(){
    @Override
    public void run() {
        //..
     }
}).start();

程序失灵:

第二天我运行程序 发送了一条邮件之后发现这个程序失灵了 ,后台无异常. 想到可能是邮箱有问题
最后发现是因为我用QQ安全中心开启了邮箱登录保护 如下图:

这里写图片描述

此时用电脑QQ打开邮箱就可以正常使用了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值