如何通过Android应用程序中的邮件发送附件?

时间:2014-07-22 09:24:04

标签: java android sendmail attachment email-attachments

您好我正在通过Android应用程序发送邮件。我在我的应用程序中导入邮件库和激活库。

当我发送邮件已成功发送但附件没有。可以告诉我怎样才能发送它。

这是我的代码:

public synchronized void sendMail(String body, String recipients) throws Exception {   
        try{
        MimeMessage message = new MimeMessage(session);   
        DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));   
        message.setSender(new InternetAddress("shankar.uclid@gmail.com"));   
        message.setSubject("Request For Claim");


        MimeBodyPart messageBodyPart2=new MimeBodyPart(); // creating new MimeBodyPart object and setting DataHandler to this object
        String filename="file:///android_asset/code.js"; //you can change according to your choice
        DataSource source=new FileDataSource(filename);
        messageBodyPart2.setDataHandler(new DataHandler(source));
        messageBodyPart2.setFileName(filename);

        Multipart multipart=new MimeMultipart(); 
        multipart.addBodyPart(messageBodyPart2);

        message.setContent(multipart);

        message.setDataHandler(handler);  
        showLog("recepetent is "+recipients);
        if (recipients.indexOf(',') < 0)   

            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("shankar.uclid@gmail.com"));   
        else  
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));   
        Transport.send(message);   
        }catch(Exception e){

            e.printStackTrace();
        }
    }   

我不知道为什么我的附件没有得到。

谢谢

1 个答案:

答案 0 :(得分:1)

请尝试这种方式,希望这有助于您解决问题。

    public static void email(Context context, String to, String cc,String subject, String body, List<String> files)
    {
        //need to "send multiple" to get more than one attachment
        final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND_MULTIPLE);
        emailIntent.setType("text/plain");
        emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL,
                new String[]{to});
        emailIntent.putExtra(android.content.Intent.EXTRA_CC,
                new String[]{cc});
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
        emailIntent.putExtra(Intent.EXTRA_TEXT, body);
        //has to be an ArrayList
        ArrayList<Uri> uris = new ArrayList<Uri>();
        //convert from paths to Android friendly Parcelable Uri's
        for (String file : files)
        {
            File fileIn = new File(file);
            Uri u = Uri.fromFile(fileIn);
            uris.add(u);
        }
        emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
        context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));
    }