在许多的Android项目 中,我们都会设置一个让用户提意见的功能,比较多的做法,就是申请一个邮箱,通过用户反馈后让内容发到邮箱中,然后查看。
本篇的邮箱发送,属于使用代码进行发送第三方邮件,即本来你申请的是 139 的,然后却用 QQ 邮箱去登录,那肯定是不行的,所以需要申请授权码,申请之后,就用账号加授权码发送即可。
注意的是,如果是公司邮箱,要去你们的邮箱配置服务器中,查看SMTP服务器,端口和是否开启SSL,每个公司都不一样,目前还未遇到不能用的情况
说明:由于笔者一直使用的事qq邮箱和139邮箱,互相发送,所有本片也是讲的qq邮箱与39邮箱,163邮箱也是可以的。
对于个人开发者而言,个人app如何收集用户日志,值得思考下。先从bugly等第三方的bug收集讲起,他们这些只能收集部分日志信息,不完整,没有完整的上下文,也不利于分析问题,另外是crash或者是exception下才会上报日志,有些业务并不会发生crash或者是exception,这不满足自己的特定需求。如果是用日志文件的方式记录日志呢,这个好,可以有完整的日志,要考虑的就是日志如何上传的问题了。对于日志上传,如果有自己的服务器,那么也好处理,但是对个人开发者而言,还得配置下才能将日志上传到服务器,查阅也麻烦,有的并没有服务器,有没有低成本的实践方式呢,有的,可以考虑用邮件上传日志的方式。
在最后附上DEMO,下载后使用需要获取自己qq邮箱授权码到代码中去,然后配置相关参数。
简单介绍:
这是一个app上可以进行用户反馈以及异常信息收集后生成文件以附件形式发送到邮箱,不一定完美,这样的方式适用于个人pp和用户量比较少的的app,如果用户量过于庞大,这种方式就有很大劣势,适合前期阶段。采用的是邮件上传日志文件的方式(日志文件是用异常生成日志),邮箱是用的qq邮箱,通过授权码的方式,在客户端发送邮件到指定邮箱,不用担心账号密码泄漏。所有的日志都集中在邮箱中,查阅也相当方便。
邮箱中获取授权码:
1、登录qq邮箱,在顶部选择邮箱设置,如图:
2、然后往下拉,看到下图这个就可以了,把红圈圈里的开启
3、然后就会生成下图中的这个授权码
所以,这里添加一个 ZMailManager 的工具类。
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
implementation 'com.github.LillteZheng:ZMail:V1.0'
主要代码:
ZMailManager(封装) 代码:
//发送邮件
/**
* fromAddr -- 发送人邮箱,不填报错
* nickName -- 发送人的昵称,不写则默认为 test
* password -- 授权码,不填报错,gmail 记得允许权限低的应用可以访问的权限
* host -- 配置 host 服务地址,默认根据发件人的邮箱来,比如 [email protected] ,则 host 为 smtp.qq.com
* isSSLvertify -- 是否开启SSL验证,默认开启,开启是端口为465,不开启则为25,建议开启,很多邮箱都需要验证 SSL的
* port -- 根据isSSLvertify,开启是端口为465,不开启则为25,也支持自定义
* subject -- 邮件主题,不写默认 TEST
* content -- 邮件内容,不写默认 This is a test email
* file -- 支持 url 和 本地文件,可多个
* toAddrs -- 收件人,多个多个,必填,不填报错
*/
ZMailManager
.fromAddr(SEND_EMAIL)
.nickName("我是发送人")
.password(PASSWORD)
.host("smtp.qq.com")//是什么类型的邮箱就更改为什么类型,如为163邮箱 例:smtp.163.com
.isSSLvertify(false)
.port(25)
.subject("TEST邮件")
.content("这里在demo中放入异常文本")//内容
// .file(getFile)//附件
// .file(new String[]{imageUrl})附件
.toAddrs(new String[]{TO_EMAIL})
.listener(this)
.send();
如果需要知道更多详细代码:
百度网盘:戳这里 提取码:y4kd
CSDN通道:戳这里