我想在发送一个电子邮件添加多个附件
Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {"email1@email.com", "email2@email.com"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "The Subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "The Text");
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
emailIntent.setType("text/plain");
startActivity( Intent.createChooser(emailIntent, "Send Email Using: ") );
我用gmail发送电子邮件时没有问题。当我在android系统中使用电子邮件客户端发送电子邮件时,就不能添加附件。邮件内容中所有的文本、标题都有,就是没有附件。
这是怎么回事呢?
这段代码没看出来问题,下面的代码是android源码中邮件处理Intent.ACTION_SEND_MULTIPLE
的代码,感觉要调试看看是不是在addAttachmentFromSendIntent(uri)
里面有什么异常了,也可能是uri的问题,现在还无法确定。
if (Intent.ACTION_SEND_MULTIPLE.equals(mAction)
&& intent.hasExtra(Intent.EXTRA_STREAM)) {
ArrayList<Parcelable> list = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
if (list != null) {
for (Parcelable parcelable : list) {
Uri uri = (Uri) parcelable;
if (uri != null) {
addAttachmentFromSendIntent(uri);
}
}
}}
private void addAttachmentFromSendIntent(Uri uri) {
final Attachment attachment = loadAttachmentInfo(uri);
final String mimeType = attachment.mMimeType;
if (!TextUtils.isEmpty(mimeType) && MimeUtility.mimeTypeMatches(mimeType,
AttachmentUtilities.ACCEPTABLE_ATTACHMENT_SEND_INTENT_TYPES)) {
addAttachment(attachment);
}
}
请使用下面这个方法:
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE); emailIntent.setType("plain/text");
ArrayList<Uri> uris = new ArrayList<Uri>();
String[] filePaths = new String[] {image1 Path,image2 path};
for (String file : filePaths)
{
File fileIn = new File(file);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
if ( !(app_preferences.getString("email", "") == null || app_preferences.getString("email", "").equals(""))) {
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] {app_preferences.getString("email", "")});
}
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject name");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Please find the attachment.");
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
startActivity(Intent.createChooser(emailIntent, "Email:"));
想解决:对100人批量发送邮件,这100人的附件都是唯一,每人有两个附件(如每人都有一份1、年度考评结果-工作薄,2、年度考评报告-Word)