linux 邮件文件名 bin,使用crontab作业发送邮件,电子邮件文本将转为名为ATT00001.bin的附加文件...

sastorsl..

10

我自己也mailx遇到了同样的问题,只有我正在输出文字输出- Heirloom mailx 12.4 7/29/08

在命令行上运行脚本时,电子邮件将显示为带有文本正文的普通电子邮件.

但是,当我通过crontab电子邮件的正文运行完全相同的脚本作为附件 - ATT00001.BIN(Outlook),application/octet-stream(mutt)或"noname"(Gmail).

进行了一些研究来解决这个问题,但是这里有:

问题

如果Mailx在文本输入中遇到未知/控制字符,则将其转换为带有application/octet-stream mime-type set的附件.

从手册页:

对于包含除换行符和水平制表符之外的格式字符的任何文件

所以你需要删除那些可以用ie完成的控制字符 tr

echo "$Output" | /usr/bin/tr -cd '\11\12\15\40-\176' | mail ...

但是因为我有挪威语UTF8字符:æøå - 列表扩展,你真的不想维护这样的列表,我需要挪威字符.

并检查附件,我发现我只有\ r,\n范围32-176中的"常规"ASCII字符 - 所有可打印和 184和195 - > UTF8

Sollution

在脚本中明确设置区域设置:

LANG="en_US.UTF8" ; export LANG

export在shell中运行- 或者setenv如果您运行csh或tcsh确定您的语言环境设置为什么.

说明

Mailx - 在shell中运行时 - LANG设置为.UTF8,将正确识别UTF8字符并继续.

如果crontab未设置LANG 运行,并且默认为LANG = C,则默认情况下crontab将仅运行一组受限制的环境变量(取决于系统).

mailx(或其他程序)将无法识别UTF8字符并确定输入包含未知的控制字符.

我的问题是UTF8字符,你的输入可能是其他控制字符.运行它hexdump或od -c,但由于它在常规shell中正常工作,我怀疑LANG问题.

参考文献:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值