Java写邮箱附件二进制文件时出现多余字节(0A前出现0D)的问题

最近在写一个通过邮箱发送sbd二进制附件程序的时候,遇到了一个小问题,就是在附件中出现0A的地方系统会自动在前面添加一个0D。

网上的资料说Windows下0x0A和 0x0D 加在一起表示的是换行,如果没有用二进制形式打开文件,遇到0X0A时,它会把它默认做换行标志然后给你补上0X0D。

(15条消息) 关于fwrite 读写出现多余字节的问题_Li X的博客-CSDN博客https://blog.csdn.net/LX370ZZZ/article/details/85235149
(15条消息) 网络传输中文本传输与二进制传输与字符集_ccfboy的博客-CSDN博客https://blog.csdn.net/ccfboy/article/details/6170538下面是邮件添加附件的代码,将字节数组打包成ByteArrayDataSource添加到附件,可以看出是以text的格式写入附件,所以就会造成上述的问题。

ByteArrayDataSource dataSource = new ByteArrayDataSource(fileContent, "text/plain");
helper.addAttachment(MimeUtility.encodeWord(fileName, "utf-8", "B"), dataSource);
javaMailSender.send(mimeMessage);

所以我们只要将“text/plain”改为“application/octet-stream”就可以用二进制方式写入附件,从而解决0A前自动添加0D的问题。当然二进制类型不仅只有上述的这一种,具体大家可以参考下面的链接。

MIME 类型 - HTTP | MDN (mozilla.org)https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Basics_of_HTTP/MIME_types

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值