使用mailx发送文本文件时出现换行失效格式错乱问题
问题排查与解决方案
根因分析
mailx默认发送纯文本邮件时会启用flowed文本格式,对于仅以单个LF(Unix换行符)结尾、无末尾空格的连续行,会被判定为同一段落的软换行,收件方邮件客户端解析时会自动合并行,导致第二、第三行拼接的异常问题。- 部分邮件传输代理在转换Unix格式换行到邮件标准的CRLF换行时出现异常,吞掉了第二行末尾的换行符,也会触发该问题。
可落地解决方法
方法1:指定邮件格式为固定换行(最推荐)
发送时添加内容头声明格式为固定格式纯文本,禁止客户端自动合并行:
cat /home/user/test.txt | mailx -s "This is a test" -a "Content-Type: text/plain; charset=utf-8; format=fixed" user@email.com
方法2:修改文本生成规则规避软换行判定
调整生成test.txt的脚本,在每行末尾追加空格,避免被判定为同一段落的软换行:
#!/bin/bash echo "##################################### " >> /home/user/test.txt echo "########### First Email ############# " >> /home/user/test.txt echo "##################################### " >> /home/user/test.txt
方法3:作为附件发送
如果不需要内容直接展示在邮件正文,将文件作为附件发送可完全规避格式问题:
# 需先安装uuencode工具,对应系统包名为sharutils uuencode /home/user/test.txt test.txt | mailx -s "This is a test" user@email.com
内容的提问来源于stack exchange,提问作者suda
相关产品推荐
相关产品推荐

