linux下使用uuencode+mail发送附件[技术]

蚊子这两天写脚本,脚本执行的结果需要发邮件给我,通常我会把结果内容通过cat的方式管道传递给mail命令然后作为邮件的内容发出来,但这不是蚊子所要的,蚊子希望把结果作为附件发送出来。同事告诉我可以使用uuencode命令来发送,于是蚊子网上搜了一下,并自己尝试,果然可以,下面就把uuencode配合mail发送附件的过程记下来。

首先centos默认情况下是没有按照uuencode包的

yum install sharutils

这样就可以把uuencode包装上

下面就可以使用uuencode和mail命令配合使用了,来看下面的例子

在/root目录下都有install.log文件,我们就以这个为例子

uuencode install.log install.log |mail –s “test attach” wenzi@wenzizone.cn

然后通过客户端把邮件收下来就可以看到邮件中的附件了

如果需要在同一封邮件中包含两个或多个也是可以的,如下

(uuencode a.log a.log;uuencode b.log b.log) | mail –s “two attach” wenzi@wenzizone.cn

这样通过客户端收下来后就可以看到两个附件了。

参考:http://blog.chinaunix.net/u3/93926/showart_1895548.html

http://space.itpub.net/110321/viewspace-617491

命令行下发送邮件(非用户验证)

今天蚊子给开发人员配了个postfix测试程序发送邮件,为了验证是否配置成功,需要在命令行方式下发送邮件,网上查了些资料,现在把这些整理下来,方便以后自己查看只用,蚊子配置的postfix是匿名发送的,不需要用户验证。

连接上服务器的25端口,执行以下命令

# telnet 192.168.1.201 25
Trying 192.168.1.201…
Connected to localhost (192.168.1.201).
Escape character is ‘^]’.
220 localhost ESMTP Postfix
helo a
250 localhost
mail from:harvey_liu@126.com
250 2.1.0 Ok
rcpt to:harvey_liu@126.com
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
test just a test
.
250 2.0.0 Ok: queued as E832C43008F
quit
221 2.0.0 Bye
Connection closed by foreign host.

# telnet 192.168.1.201 25

Trying 192.168.1.201…
Connected to localhost (192.168.1.201).
Escape character is ‘^]’.
220 localhost ESMTP Postfix

helo a
250 localhost

mail from:harvey_liu@126.com
250 2.1.0 Ok

rcpt to:harvey_liu@126.com
250 2.1.5 Ok

data
354 End data with <CR><LF>.<CR><LF>

test just a test
.

250 2.0.0 Ok: queued as E832C43008F
quit

221 2.0.0 Bye
Connection closed by foreign host.

SMTP 命令包括:
我们通过telnet 到邮件服务器25端口后,就可以使用以下的命令来发送邮件了.
HELO 向服务器标识用户身份。发送者能进行欺骗,但一般情况下服务器都能检测到。
EHLO 向服务器标识用户身份。发送者能进行欺骗,但一般情况下服务器都能检测到。
MAIL FROM 命令中指定的地址是发件人地址
RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。
DATA 在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以CRLF.CRLF 结束
VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令
EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用
HELP 查询服务器支持什么命令
NOOP 无操作,服务器响应 250 OK
RSET 重置会话,当前传输被取消,服务器响应 250 OK
QUIT 结束会话