前景知識:OAuth,Javamail-android,Javamail 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 就能夠了。安全