csh_34
2013-01-21 05:08
采纳率: 80.4%
浏览 9.2k

发送电子邮件时添加多个附件

我想在发送一个电子邮件添加多个附件

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系统中使用电子邮件客户端发送电子邮件时,就不能添加附件。邮件内容中所有的文本、标题都有,就是没有附件。
这是怎么回事呢?

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • balmy 2013-01-21 11:24
    已采纳

    这段代码没看出来问题,下面的代码是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);
           }
        }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • nana4ever 2013-01-22 02:17

    请使用下面这个方法:

    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:"));
    
    评论
    解决 无用
    打赏 举报
  • 美如 2019-03-21 21:21

    想解决:对100人批量发送邮件,这100人的附件都是唯一,每人有两个附件(如每人都有一份1、年度考评结果-工作薄,2、年度考评报告-Word)

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题