我想發送一個意圖由用戶選擇的電子郵件應用程序處理。意圖有一個簽名作爲附件。我讀過Gmail應用程序無法處理自定義MIME類型,因此我點擊K-9 Mail來處理意圖。Android的意圖與p7s數字簽名來簽署電子郵件
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Email test");
emailIntent.putExtra(Intent.EXTRA_TEXT, confirmEmailBody);
emailIntent.putExtra(Intent.EXTRA_STREAM, uriSigned);
emailIntent.setType("application/pkcs7-signature");
try {
startActivity(Intent.createChooser(emailIntent, "Sending email..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
我已經從P7S文件(本SD卡上),從字符串生成confirmEmailBody uriSigned。上面的意圖設置附件屬性是這樣的:
Content-Transfer-Encoding: base64
Content-Type: application/pkcs7-signature;
name="smime.p7s"
Content-Disposition: attachment;
filename="smime.p7s";
size=1886
但是,附件不能發現的簽名,因爲一般的電子郵件內容類型(位於一起發送方信息,時間等)的multipart /混合時它應該是多部分/簽名的。 如何在意圖中設置標題,使其最終成爲Content-Type:multipart/signed;在電子郵件中?
當它顯示爲簽名後,我會看看它是否會根據電子郵件的正文進行驗證。
P.S.當然,我可以使用javamail輕鬆發送正確簽名的電子郵件,但我想避免向用戶詢問電話的gmail密碼。