Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android应用程序中通过邮件发送附件?_Java_Android_Sendmail_Attachment_Email Attachments - Fatal编程技术网

Java 如何在android应用程序中通过邮件发送附件?

Java 如何在android应用程序中通过邮件发送附件?,java,android,sendmail,attachment,email-attachments,Java,Android,Sendmail,Attachment,Email Attachments,嗨,我正在通过android应用程序发送邮件。我在我的应用程序中导入邮件库和激活库 当我发送邮件时,邮件已成功发送,但附件未发送。有谁能告诉我怎么才能把它也寄出去 这是我的密码: public synchronized void sendMail(String body, String recipients) throws Exception { try{ MimeMessage message = new MimeMessage(session);

嗨,我正在通过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();
        }
    }   
public synchronized void sendMail(字符串正文、字符串收件人)引发异常{
试一试{
MimeMessage message=新MimeMessage(会话);
DataHandler=新的DataHandler(新的ByteArrayDataSource(body.getBytes(),“text/plain”);
message.setSender(新的互联网地址(“shankar。uclid@gmail.com"));   
message.setSubject(“索赔请求”);
MimeBodyPart messageBodyPart2=新的MimeBodyPart();//创建新的MimeBodyPart对象并将DataHandler设置为此对象
字符串文件名=”file:///android_asset/code.js“;//您可以根据自己的选择进行更改
DataSource source=新文件DataSource(文件名);
messageBodyPart2.setDataHandler(新的DataHandler(源));
messageBodyPart2.setFileName(文件名);
Multipart Multipart=新的MimeMultipart();
multipart.addBodyPart(messageBodyPart2);
message.setContent(多部分);
message.setDataHandler(handler);
showLog(“收件人为”+收件人);
if(recipients.indexOf(',')<0)
message.setRecipients(message.RecipientType.TO,InternetAddress.parse。uclid@gmail.com"));   
其他的
message.setRecipient(message.RecipientType.TO,新的InternetAddress(recipients));
传输。发送(消息);
}捕获(例外e){
e、 printStackTrace();
}
}   
我不知道为什么我的附件没有得到


谢谢你

试试这个方法,希望这能帮助你解决问题。

    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..."));
    }
公共静态无效电子邮件(上下文上下文、字符串收件人、字符串抄送、字符串主题、字符串正文、列表文件)
{
//需要“发送多个”才能获取多个附件
最终意图emailIntent=新意图(android.content.Intent.ACTION\u SEND\u MULTIPLE);
emailIntent.setType(“文本/普通”);
emailIntent.putExtra(android.content.Intent.EXTRA_电子邮件,
新字符串[]{to});
emailIntent.putExtra(android.content.Intent.EXTRA_CC,
新字符串[]{cc});
emailIntent.putExtra(Intent.EXTRA_SUBJECT,SUBJECT);
emailIntent.putExtra(Intent.EXTRA_文本,正文);
//必须是ArrayList
ArrayList URI=新的ArrayList();
//从路径转换为Android友好的包裹Uri
用于(字符串文件:文件)
{
File fileIn=新文件(File);
uriu=Uri.fromFile(fileIn);
添加(u);
}
emailIntent.putParcelableArrayListExtra(Intent.EXTRA\u流,URI);
context.startActivity(Intent.createChooser(emailIntent,“发送邮件…”);
}

参见此处也参见此处这些链接未使用mail.jar、activation.jar。我想直接通过代码而不是任何提取。没有人,我想附加文件。