我想使用带有2个附件的Javamail发送电子邮件。其中一个是json文件,另一个是txt文件(logcat.txt)。 logcat.txt的大小约为1mb。
如果我的代码中包含addAttachment(multipart,reportPath,"logcat.txt");,它不会发送任何电子邮件。如果我删除addAttachment(multipart,reportPath,"logcat.txt");,它可以工作。
当json文件变大时,在大约500kb的一点上,它都不发送。
我的代码:

public synchronized void sendReport(String subject, String body, String filepath, String filename, String reportPath, String sender, String recipients){
    try {
        Multipart multipart = new MimeMultipart("mixed"); //try adding "mixed" here as well but it doesn't work
        MimeMessage message = new MimeMessage(session);
        message.setSender(new InternetAddress(sender));
        message.setSubject(subject);

        //body
        BodyPart messageBodyPart2 = new MimeBodyPart();
        messageBodyPart2.setText(body);

        Log.d(TAG, "sendReport: " + reportPath);
        //this prints sendReport: /storage/emulated/0/Android/data/**app package name**/files/LOG-1472631395.json
        Log.d(TAG, "sendReport: " + filepath);
        //sendReport: /storage/emulated/0/Android/data/**app package name**/files/logcat.txt
        addAttachment(multipart,filepath,filename);
        addAttachment(multipart,reportPath,"logcat.txt");
        multipart.addBodyPart(messageBodyPart2);

        message.setContent(multipart);

        if (recipients.indexOf(',') > 0)
            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
        else
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
        Transport.send(message);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private static void addAttachment(Multipart multipart, String filepath, String filename) throws MessagingException
{
    DataSource source = new FileDataSource(filepath);
    BodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setDataHandler(new DataHandler(source));
    messageBodyPart.setFileName(filename);
    multipart.addBodyPart(messageBodyPart);
}


我还使用另一种方法发送附件,但是它也不起作用:

private static void addAttachment(Multipart multipart, String filepath, String filename) throws Exception
    {
        MimeBodyPart mimeBodyPart = new MimeBodyPart();
        mimeBodyPart.attachFile(filepath);
        mimeBodyPart.setFileName(filename);
        multipart.addBodyPart(mimeBodyPart);
    }


有谁知道如何解决这个问题?先感谢您。

最佳答案

    //In this list set the path from the different files you want to attach
    String[] attachments;

    Multipart multipart = new MimeMultipart();

    //Add attachments
    if(attachments != null && attachments.length > 0) {
        for (String str : attachments) {
            MimeBodyPart messageBodyPart = new MimeBodyPart();
            DataSource source = new FileDataSource(str);
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(source.getName());
            multipart.addBodyPart(messageBodyPart);
        }
    }

    message.setContent(multipart);


我上传大型文件没有问题,您可以尝试以下代码。

09-25 17:26
查看更多