当前位置: 首页 > 知识库问答 >
问题:

JavaMailSender写入多部分异常

戴建义
2023-03-14

当我使用JavaMailSender发送带有附件的电子邮件时,它总是失败,并引发以下异常

org.springframework.mail.MailSendException: Failed messages: javax.mail.MessagingException: IOException while sending message;
  nested exception is:
    java.io.IOException: Exception writing Multipart
; message exception details (1) are:
Failed message 1:
javax.mail.MessagingException: IOException while sending message;
  nested exception is:
    java.io.IOException: Exception writing Multipart
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1365)
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:462)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:359)
    at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:354)

这是我的密码

MimeMessage message = mailSender.createMimeMessage();
try {
    MimeMessageHelper helper = new MimeMessageHelper(message, true);
    helper.setFrom(userName);
    helper.setTo(toAddress);
    helper.setSubject(subject);
    FileSystemResource file = new FileSystemResource(filePath);
    helper.addAttachment(file.getFilename(), file);
} catch (Exception e) {
    log.error("oops..., ", e);
}
mailSender.send(message);

共有3个答案

墨寂弦
2023-03-14

如果不设置文本,则会出现此错误。即使设置为空字符串,也需要设置文本。

https://stackoverflow.com/a/33015901/9905202

袁英豪
2023-03-14

设置内容类型,我通过将内容类型设置为第三个参数来解决这个问题

帮手addAttachment(“附件文件名”,新的ByteArrayResource(IOUtils.toByteArray(inputStream)),“application/pdf”);

卫嘉泽
2023-03-14

我幸运地解决了这个问题。

只需在附件中设置一个空文本内容,就像这样就可以了。

helper.addAttachment(MimeUtility.encodeText("")), new ByteArrayResource(IOUtils.toByteArray(inputStream)));
helper.setText("", true);
 类似资料:
  • 我创建了简单的MailService来通过电子邮件发送内容。它工作但我不知道如何处理异常(我的想法是在HTML视图中打印一些信息或在404页重定向) 邮件服务: 在控制器中的用法:

  • web.xml 应用程序-servlet.xml context.xml(在tomcat conf文件夹中) 谢谢你的建议和帮助。

  • 我安装了一个3节点Cassandra (2.0.3)群集,这是我的表格: 我用datastax java驱动 这是我创建的用户对象: 我创建了其中的10k - i是我的用户数组中的用户的索引。我不想使用批量插入,而是模拟插入多个记录的压力。这是我的代码: < li >计算记录数量时(使用cqlsh),我从未超过4k(10k中) < li >只有一台服务器进行写入(使用opscenter写入请求/所

  • 我试图用python写的lambda (aws)完成多部分上传。下面是我正在使用的代码。大约有120个部件,总大小为30GB。下面的操作似乎没有在5分钟内完成,因此lambda关闭,上传似乎没有完成。S3提供异步多部分上传功能吗?我相信这将确保文件得到合并,不管lambda关闭。

  • 问题内容: 由于某种原因,我的String部分由PrintWriter编写。结果,我的文件中出现了部分文本。方法如下: 在将文本打印到控制台的地方,我可以看到数据全部存在,没有任何丢失,但是当PrintWriter完成工作时,显然文本的一部分丢失了……我一无所知。 问题答案: 在丢弃打开的流之前,应始终保留流。这将释放一些相当昂贵的系统资源,当您在文件系统上打开文件时,您的JVM必须获取这些资源。

  • 我正在使用 Amazon S3 分段上传,我读到您可以并行上传部分文件。但是,通过查看文档,我发现亚马逊对上传的文件部件的响应不包含部件号。所以我的问题是,如果我异步上传文件的第1部分和文件的第2部分,那么我检查来自亚马逊的响应,我如何知道响应是引用文件的第1部分还是第2部分? 下面是一个请求和响应的示例。