文档章节

刚刚学习到的Android使用Javamail通过XOauth调用Gmail API发送邮件的方法

since1986
 since1986
发布于 2014/04/12 18:27
字数 404
阅读 778
收藏 10

前景知识:OAuthJavamail-androidJavamail api in android using XOauth

我的一个App项目需要在Service中自动发送邮件的功能,因为是后台自动发送邮件,不能出现邮件UI所以需要使用Javamail来发送,在Android中并未包含Javamail,所以需要第三方lib:Javamail-android;同时由于我的App的邮件发送服务不应保存用户的邮件帐号与密码(因为会有安全问题),所以就必须要用到XOauth的方式(也就是无需存储用户邮件帐号和密码的方式)来调用Gmail API来发送邮件。


关键在于XOauth的AuthToken的获取,在这篇文章中讲的很清楚了,需要使用AccountManager来获取AuthToken,关键代码如下:

AccountManager accountManager = AccountManager.get(context);

//获得本机第一个google账号
Account me = accountManager.getAccountsByType("com.google")[0];

//注意在获得AUTHTOKEN前要invalidateAuthToken一下,否则会得到null的AUTHTOKEN
accountManager.invalidateAuthToken("com.google", mailProperties.oauthToken); 
			
accountManager.getAuthToken(me, "oauth2:https://mail.google.com/", null, true, new AccountManagerCallback<Bundle>() {
				
				@Override
				public void run(AccountManagerFuture<Bundle> future) {
					try {
						//mailProperties.oauthToken是我的一个存储oauthToken的外部变量,用的时候换成你自己的
						mailProperties.oauthToken = future.getResult().getString(AccountManager.KEY_AUTHTOKEN); //通过回调方法获得AUTHTOKEN
						Log.i(SMSBroadcastReceiver2.class.getName(), mailProperties.oauthToken);
					} catch (OperationCanceledException e) {
						e.printStackTrace();
					} catch (AuthenticatorException e) {
						e.printStackTrace();
					} catch (IOException e) {
						e.printStackTrace();
					}
				}
			}, null);


获取到了AuthToken后,剩下的就简单了,按部就班使用Javamail发送邮件就可以了,发送邮件的方法参照:Javamail api in android using XOauth 就可以了。


© 著作权归作者所有

共有 人打赏支持
since1986
粉丝 7
博文 60
码字总数 10510
作品 1
石家庄
程序员
私信 提问
Android 使用 JavaMail

今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题不用第三方邮件程序。为了以后使用方便,自己写了段代码. Javamail-Android配置步骤: 下载Android版本JavaMail包,addit...

Taki
2012/08/14
0
2
android 使用JavaMail

今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题不用第三方邮件程序。为了以后使用方便,自己写了段代码 Javamail-Android配置步骤: 下载Android版本JavaMail包,addit...

长平狐
2012/06/28
3.6K
2
Android发送email(不用javamail)

学习android开发中…… 看了一些发送email的方法,不调用的话基本就都是用的javamail 可是我在实际验证过程中发现javamail好像和android并不很兼容呢,2.2都没有问题,再高就各种bug 大神们能...

garfieldo
2014/05/13
399
0
Android中使用apache commons-net发送后台邮件的方法

上一篇文章中我介绍了使用Javamail-android在android中发送后台邮件的方法,但是,这个Javamail-android并不是一个靠谱的开源组织发布的,而且是修改过的Javaee,总觉得用起来别扭,所以我就...

since1986
2014/04/24
0
0
Android使用javamail收发邮件

Android里访问网络、收发短信都还是经常用到的功能,但是这次需求是可以收发邮件,网上搜了下,这里转一个,博主写的几个工具类确实非常好用,转帖过来,下面是需要用到的资源和工具类文件 ...

小小_小小
2014/12/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

tomcat线程模型

Connector结构 BIO模式 NIO模式

grace_233
23分钟前
1
0
Javascript

变量定义 以$,_,字母开头 大小写敏感 var 关键字声明变量 声明未赋值undefined 数据类型 字符串,数字,布尔,数组,NULL,undefined 变量均为对象 函数 无默认值 var声明的是局部变量 函数外声明...

关元
24分钟前
1
0
文件系统、服务、防火墙、SELINUX——安全四大金刚

一提到安全,大家都会想到防火墙,和文件系统权限。而实际工作环境中,我们在Linux的安全配置,会涉及到四个级别。我们思考一个场景,你要在百度盘中存放一个文件,这个动作需要考虑下面四个...

Linux就该这么学
25分钟前
1
0
从源码角度理解Java设计模式——门面模式

一、门面模式介绍 门面模式定义:也叫外观模式,定义了一个访问子系统的接口,除了这个接口以外,不允许其他访问子系统的行为发生。 适用场景:子系统很复杂时,增加一个接口供外部访问。 优...

我叫刘半仙
35分钟前
2
0
新鲜出炉,2019最新大厂面试题总汇!

在这个互联网技术快速迭代的时代,每个程序员都知道技术对于职业发展的重要性,那些技术好的程序员不仅薪资高,而且大多数集中在一线互联网企业工作,让人感觉非常高大上的同时,也想去大厂做...

Java架构资源分享
44分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部