文档章节

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

since1986
 since1986
发布于 2014/04/12 18:27
字数 404
阅读 770
收藏 10
点赞 0
评论 0

前景知识: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
博文 59
码字总数 10510
作品 1
石家庄
程序员
通过javamail,用免费阿里云邮箱账号发邮件

环境:Debian9, OpenJDK-8,tomcat-8.5,javamail-1.16.1 过程: apt update && apt upgrade && apt autoremove # 更新软件 apt install openjdk-8-jdk # 安装 openjdk-8 apt install libser......

Mr_zebra ⋅ 05/15 ⋅ 0

java基础实现邮件发送(以qq和网易为例)

java基础实现邮件发送(以qq和网易为例) 当你浏览一些网站的时候,更多的时候都是需要我们登陆、注册的;而注册激活账号一般有两种形式,一是电话验证码激活,二是邮箱激活;第一种是人名币...

NYDarren ⋅ 05/14 ⋅ 0

tomcat支持哪些j2ee技术!

j2ee的13种核心技术:JDBC, JNDI, EJBS, RMI, JSP, JAVA SERVLETS, XML, JMS, JAVA IDL, JTS, JTA, JAVAMAIL 和 JAF tomcat支持的有哪些呢? 我所知道的是 支持:JDBC,JSP,Java Servlet,XML,......

MrBoyce ⋅ 05/14 ⋅ 0

WildFly 13 "Baker's Dozen" 发布,改进 Java 10 兼容性

WildFly 13 Final 已正式发布,并提供了下载地址。下面不妨来看一下有哪些值得关注的更新。 EE8 功能和新的发布模型 这是使用新季度交付模式之后发布的第二个版本。该计划是在完全完成的增量...

局长 ⋅ 06/02 ⋅ 0

Node.js 邮件发送--Nodemailer

Nodemailer 是一个简单易用的 Node.JS 邮件发送模块(通过 SMTP,sendmail,或者 Amazon SES),支持 unicode,你可以使用任何你喜欢的字符集。 Unicode to use any characters HTML content...

匿名 ⋅ 2012/07/15 ⋅ 0

Android 使用 JavaMail

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

Taki ⋅ 2012/08/14 ⋅ 2

android 使用JavaMail

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

长平狐 ⋅ 2012/06/28 ⋅ 2

Android发送email(不用javamail)

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

garfieldo ⋅ 2014/05/13 ⋅ 0

JavaEE-JavaMail 01 简介

一. JavaMail 简介 JavaMail API提供了一种与平台无关和协议独立的框架来构建邮件和消息应用程序 JavaMail API提供了一组抽象类定义构成一个邮件系统的对象, 它是阅读, 撰写和发送电子信息的...

不落的太阳Sean ⋅ 2015/11/26 ⋅ 0

java邮件开发

一、基础知识 1. 为什么学习邮件开发 许多办公自动化项目(OA)中都需要附带发送邮件的功能。 在许多网站项目中也都需要附带发送邮件的功能,即要求软件开发人员在WEB应用中编写相应的邮件处...

小米米儿小 ⋅ 2013/12/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

5.1 vim介绍 5.2 vim移动光标 5.3 ,5.4vim一般模式下移动光标,复制粘贴

vim命令 vim是vi的一个升级版;vim可以显示文字的颜色 安装vim这一个包vim-enhanced 如果不知道安装包,可以使用 命令下面命令来查看vim命令是那个包安装的。 [root@linux-128 ~]# yum prov...

Linux_老吴 ⋅ 28分钟前 ⋅ 0

vim一般模式

vim 是什么 vim是什么 ? 在之前接触Linux,编辑网卡配置文件的时候我们用过了vi ,vim简单说就是vi的升级版,它跟vi一样是Linux系统中的一个文本编辑工具。 如果系统中没有vim ,需要安装一...

李超小牛子 ⋅ 36分钟前 ⋅ 0

docker实战

构建企业级Docker虚拟化平台实战 重点剖析虚拟化和云计算概念; 分析Docker虚拟化的概念和原理; 从0开始实战Docker虚拟化平台; 基于Docker构建Nginx WEB服务器和CentOS虚拟机; 基于开源监...

寰宇01 ⋅ 45分钟前 ⋅ 0

vim介绍、vim颜色显示和移动光标、vim一般模式下移动光标、一般模式下复制粘贴剪切

VIM Vim 是 UNIX 文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff),语法高亮,全面的帮助系统,本地脚本(Vimscript),和便于选择的...

蛋黄Yolks ⋅ 今天 ⋅ 0

springboot+mockito测试controller层遇到的问题

使用MockitoJUnitRunner测试的一个例子,原来报错无法找到bean, 类似的异常如下:createBeanError..... 原因:是因为@Runwith使用了SpringRunner,应该修改为MockitoJUnitRunner 代码如下: ...

writeademo ⋅ 今天 ⋅ 0

关于“幂等”操作

一个幂等(idempotent)操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 开发中, 我们经常考虑幂等操作的场景有“接口调用”、“MQ消费”、“自动任务”等 接口调用, 可能出现...

零二一七 ⋅ 今天 ⋅ 0

Dubbo服务服务暴露之ProxyFactory Invoker

Dubbo服务暴露过程中有涉及到调用ProxyFactory 中方法获取Invoker对象的过程,现在我们来深究下源码,来看下这个过程是在做些什么,返回的Invoker 对象是什么,我们来看一下代码的切入点: ...

哲别0 ⋅ 今天 ⋅ 0

GP两种连接方式性能测试

GP两种连接方式性能测试 Pivotal import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class GPQueryStrin......

仔仔1993 ⋅ 今天 ⋅ 0

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 今天 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部