Java 邮件附加文件在下载后显示损坏

标签 java spring spring-mvc inputstream email-attachments

我正在发送带有附件的邮件,但是当我尝试打开该文件时,它打不开并出现以下错误:

enter image description here

我试着这样做:

JavaMailSenderImpl mailSender = getMailSender();
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper;
URLDataSource url;
try {
        helper = new MimeMessageHelper(message, true);
        url = new URLDataSource(new URL("localhost:8080/test/attachment/simpldoc.docx"));
        helper.setFrom(mailFrom);
        helper.setSubject(subject);
        helper.setTo(mailTo);
        helper.setText(text, true);
        helper.addAttachment(attachmentName, url);
        mailSender.send(message);
    } 
    catch (MessagingException e) {
        e.printStackTrace();
    }

最佳答案

您正在尝试将 url 对象作为附件传递。

您可以使用 url.getOutputStream() 打开流,然后在附加文件之前写入文件对象。

所有这些都是不好的。

您应该使用 File 来获取相关文件。

所以替换

URLDataSource url;
//Code
url = new URLDataSource(new URL("localhost:8080/test/attachment/simpldoc.docx"));

File url;
//Code
url = new File("file://localhost:8080/test/attachment/simpldoc.docx")

这应该会返回实际文件并将其存储在 url 对象中。

试一试。

关于Java 邮件附加文件在下载后显示损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24179777/

相关文章:

java - 如何使用 java 类作为实体和模型

java - 如何通过反射修改列表

Spring 安全 5 : providing roles for OAuth2 authenticated users

java - spring MVC HTTP状态404

java - 使用 JTDS 和 Scala 时出现不支持的版本错误

java - 带注释的 bean 配置看不到 XML 配置中的 bean

java - 在 Spring 之上开发基于插件的架构

java - java spring mvc 如何显示不按 id 的另一列?

java - 在 spring 中自动将安全标志添加到 JSESSIONID cookie

java - 如何在 spring mvc 中处理多个动态表单