基于安全理由,公司封闭了我个人的e-mail账户对外的收发功能,以后在公司往自己的邮箱发一些有价值的东西就麻烦一些了,如果,个人PC的外网web mail/smtp/pop3连接也断了就更是雪上加霜了。呵呵,不过,我暂时还是有办法应对的。
公司有几台unix服务器是随时要监控作业运行状况的,如果发现出了点问题就通过e-mail通知相关负责人。幸好,目前其连接状况还是对外开放的,也就是说,在服务器上还是可以通过mailx发邮件到我自己的邮箱的。
不带附件的邮件可以这样发:cat readme | mailx -s "just a test" your@mail.box.com
带附件的邮件,需要uuencode支持:(echo "Save the attachment and run uudecode to get it"; uuencode destroy_1.0.0.tar.gz destroy_1.0.0.tar.gz) | mailx -s "destroy 1.0" your@mail.box.com
uuencode可以将二进制文件转换为文本文件,转换后的文件可以通过纯文本e-mail进行传输,在接收方对该文件进行uudecode,即将其转换为初始的二进制文件。
如果邮件服务提供商仅仅将该附件看作是普通的文本文件,而不提供uudecode支持,那么在Unix下,可以执行uudecode将其还原:uudecode -o destroy_1.0.0.tar.gz load_from_server.txt,在Windows下就更简单了,可以把文件扩展名改为uue,然后用Winzip解开即可。
而Linux下默认是没有uuencode和uudecode的(当然也可以在网上找到源代码自行编译)。替代办法是base64,不过RHEL自带的base64在解码时有点问题,建议使用以下链接的跨平台base64编解码程序。
http://download.youkuaiyun.com/source/2931432
利用base64从服务器发送带附件的邮件可以这样:base64 binary_file | mailx -s "just a test" your@mail.box.com
把收到的邮件正文内容保存为mail_body,在本地解码:base64 -d mail_body > binary_file
就像uuencode那样,base64可以把二进制文件的每3个字节转为4个字节的文本,转换后的每字节的字符集只有64个字符,具体算法介绍网上很多地方都有,这里就不展开了。