剛剛學習到的Android使用Javamail經過XOauth調用Gmail API發送郵件的方法

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

個人一個App項目須要在Service中自動發送郵件的功能,由於是後臺自動發送郵件,不能出現郵件UI因此須要使用Javamail來發送,在Android中並未包含Javamail,因此須要第三方lib:Javamail-android;同時因爲個人App的郵件發送服務不該保存用戶的郵件賬號與密碼(由於會有安全問題),因此就必需要用到XOauth的方式(也就是無需存儲用戶郵件賬號和密碼的方式)來調用Gmail API來發送郵件。android


關鍵在於XOauth的AuthToken的獲取,在這篇文章中講的很清楚了,須要使用AccountManager來獲取AuthToken,關鍵代碼以下:api

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 就能夠了。安全

相關文章
相關標籤/搜索