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

在编写发送带有二进制附件的邮件程序时遇到一个问题,即附件中的0A字节前被自动添加了0D。这源于Windows系统中0D0A组合表示换行,当以非二进制方式处理文件时,遇到0A会被默认转换为换行。解决方案是将附件内容类型从'text/plain'更改为'application/octet-stream',以二进制方式写入,避免了额外的0D添加。通过修改邮件附件的MIME类型,可以成功解决这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

(15条消息) 关于fwrite 读写出现多余字节的问题_Li X的博客-优快云博客https://blog.youkuaiyun.com/LX370ZZZ/article/details/85235149
(15条消息) 网络传输中文本传输与二进制传输与字符集_ccfboy的博客-优快云博客https://blog.youkuaiyun.com/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

### 更改CloudCompare中点云或模型的颜色 #### 设置背景颜色 为了更好地展示不同颜色的效果,在更改点云颜色之前可以先调整背景颜色。通过菜单栏中的`View -> Background color...`选项,可以选择不同的背景色彩[^2]。 #### 修改点云颜色 对于想要改变特定点云或者模型的颜色的情况: - 首先加载所需的点云文件并应用(`Apply`)操作以确保数据被正确读取[^3]。 - 接着在左侧的数据库树(DB Tree)面板里找到对应的点云条目,并单击选中它[^1]。 此时有几种方式来定义新的颜色属性: - **全局统一颜色**: 右键点击所选对象,在弹出菜单中选择`Change Color...`命令,这会打开一个小窗口允许指定RGB数值或是直接选取一种预设颜色。 - **基于属性的颜色映射**: 如果点云带有额外的信息(比如强度、分类标签),可以通过`Render -> Scalar field`路径下的子项来进行更复杂的视觉编码。例如,按照高程高度渐变显示,则应挑选`Z (height)`作为标量字段。 完成上述任一步骤之后,即可看到视窗内的点云外观发生了相应变化。如果希望保留这些修改以便日后查看,记得及时利用`File -> Save As`功能另存整个项目文件。 ```python # 这是一个示意性的Python脚本片段,实际CloudCompare并不支持此方法设置颜色;仅供理解逻辑流程参考 cloud.set_color(r=0, g=255, b=0) # 假定函数用于设定绿色 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值