linux邮件可以带文件,六种使用Linux命令发送带附件的邮件

在很多场景中我们会使用Shell命令来发送邮件,而且我们还可能在邮件里面添加附件,本文将介绍使用Shell命令发送带附件邮件的几种方式,希望对大家有所帮助。

ea14b2b8356387f52201aa108a563370.png

如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop

使用mail命令

mail命令是mailutils(On Debian)或mailx(On RedHat)包中的一部分,我们可以使用他在命令行里面发送消息。

如果你的系统没有安装mail命令,可以使用下面的方式安装: $ sudo apt-get install mailutils (On Debian)

# yum install mailx (On RedHat or CentOS)

现在我们来使用mail命令来发送带附件的邮件,如下: echo "这里输入你邮件内容" | mail -s "邮件标题" -a file.txt hadoop@iteblog.com

在上面的命令中,-s 参数用于指定消息主题;-a 参数指定需要发送的附件路径,貌似这个不能发送多个附件。

当然,我们可以将邮件的内容存到一个文件中,比如下面我们把邮件的内容存储到message.txt文件中,然后发送: mail -s "邮件标题" -a file.txt hadoop@iteblog.com < message.txt

我们在发送附件的时候出现下面的错误: send-mail: fatal: iteblog(40010): message file too big

从上面的错误信息可以看出,我们发送的附件太大了,我们可以通过以下两种方法来加大附件大小的限制:

第一种: [root@iteblog.com ~]$ postconf message_size_limit

message_size_limit = 51200000

echo "message_size_limit = 102400000" >> /etc/postfix/main.cf && service postfix reload

Reloading Postfix configuration...done.

第二种: [root@iteblog.com ~]$ postconf -e message_size_limit=302400000

[root@iteblog.com ~]$ service postfix restart

Shutting down postfix: [ OK ]

Starting postfix: [ OK ]

[root@iteblog.com ~]$ postconf message_size_limit

message_size_limit = 302400000

[root@iteblog.com ~]$

两种方法都可以设置。

使用mutt命令

mutt是一个流行轻量级的电子邮件客户端命令,我们同样可以使用它发送带附件的邮件,如果你的电脑没有安装这个命令,请使用下面命令安装: $ sudo apt-get install mutt

# yum install mutt

现在我们可以使用mutt命令发送带附件的邮件了: echo "这里输入你邮件内容" | mutt -s "邮件标题" hadoop@iteblog.com -a file.txt

从上面可以看出,mutt 的使用和 mail 命令很类似,更多关于它的使用参数可以直接 man mutt 查看。

使用mailx命令

mailx命令看起来和mutt命令很类似,如果你电脑没安装这个命令,可以使用下面方法来安装: $ sudo apt-get install mailutils

# yum install mailx

然后可以使用下面命令发送带附件的邮件: echo "这里输入你邮件内容" | mailx -s "邮件标题" -a file.txt hadoop@iteblog.com

使用mpack命令

首先使用下面命令安装好这个命令: $ sudo apt-get install mpack

# yum install mpack

然后可以使用下面命令发送带附件的邮件: $ mpack -s "邮件标题" file hadoop@iteblog.com

使用telnet命令发送邮件

我们还可以使用telnet来发送邮件,使用起来稍微比直接用 mail 或者 mutt 命令复杂,使用如下: [root@iteblog.com ~]$ telnet localhost smtp

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

220 www.iteblog.com ESMTP Postfix

HELO iteblog.com

250 www.iteblog.com

mail from: hadoop@iteblog.com

250 2.1.0 Ok

rcpt to: hadoop@iteblog.com

250 2.1.5 Ok

data

354 End data with .

Subject: 这里输入邮件标题

这里输入邮件内容

这是内容

.

250 2.0.0 Ok: queued as C99B626D

quit

221 2.0.0 Bye

Connection closed by foreign host.

上面代码加深背景色的就是我们要输入的,我们需要根据要求输入发件人和收件人的Email等信息,然后就可以发送邮件,至于这个如何发送附件我没有去研究。。

使用sendmail命令发送邮件

我们还可以根据Email的规范自己构建邮件,如下: export MAILFROM="hadoop@iteblog.com"

export MAILTO="hadoop@iteblog.com"

export SUBJECT="Your Invoice"

export BODY="/tmp/t.html"

export ATTACH_PDF="/tmp/iteblog.pdf"

export ATTACH_CSV="/tmp/test.csv"

pdf_file=$( basename "$ATTACH_PDF" )

csv_file=$( basename "$ATTACH_CSV" )

{

echo "From: $MAILFROM"

echo "To: $MAILTO"

echo "MIME-Version: 1.0"

echo "Subject: $SUBJECT"

echo "Content-Type: multipart/mixed; boundary=\"FILEBOUNDARY\""

echo "--FILEBOUNDARY"

echo "Content-Type: multipart/alternative; boundary=\"MSGBOUNDARY\""

echo "--MSGBOUNDARY"

echo "Content-Type: text/html; charset=iso-8859-1"

echo "Content-Disposition: inline"

echo ""

cat "$BODY"

echo "--MSGBOUNDARY--"

echo "--FILEBOUNDARY"

echo "Content-Type: application/pdf"

echo "Content-Disposition: inline; filename=\"${pdf_file}\""

echo "Content-Transfer-Encoding: base64"

base64 $ATTACH_PDF

echo "--FILEBOUNDARY"

echo "Content-Type: text/csv"

echo "Content-Disposition: inline; filename=\"${csv_file}\""

echo "Content-Transfer-Encoding: base64"

base64 $ATTACH_CSV

echo "--FILEBOUNDARY--"

} | /usr/sbin/sendmail -t

运行上面的代码会生成以下的信息: From: hadoop@iteblog.com

To: hadoop@iteblog.com

MIME-Version: 1.0

Subject: Your Invoice

Content-Type: multipart/mixed; boundary="FILEBOUNDARY"

--FILEBOUNDARY

Content-Type: multipart/alternative; boundary="MSGBOUNDARY"

--MSGBOUNDARY

Content-Type: text/html; charset=iso-8859-1

Content-Disposition: inline

This is content.

--MSGBOUNDARY--

--FILEBOUNDARY

Content-Type: application/pdf

Content-Disposition: inline; filename="iteblog.pdf"

Content-Transfer-Encoding: base64

JVBERi0xLjYNJeLjz9MNCjE1IDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDk1MTgvTyAxNy9FIDQ4

ODcvTiAxL1QgOTIxNS9IIFsgNDU3IDE0OF0+Pg1lbmRvYmoNICAgICAgICAgICAgICAgICAgICAg

OTVCRkY0RkU5RkRFNDk5NEM2MTUzRTMyMzk3RTIyPjxBQkY2QTYzNkY4NDhBRjQzOTA3NERFMzdG

QkZBQTQ1Qj5dL0luZm8gMTQgMCBSL0xlbmd0aCA0OC9Sb290IDE2IDAgUi9TaXplIDE1L1R5cGUv

WFJlZi9XWzEgMiAxXT4+c3RyZWFtDQpo3mJiAAImRmFxBiYGhhYgwfcKSDAtBhKMN4ASdxhBEkwg

goERH8H4CyDAANfsBSUNCmVuZHN0cmVhbQ1lbmRvYmoNc3RhcnR4cmVmDQoxMTYNCiUlRU9GDQo=

--FILEBOUNDARY

Content-Type: text/csv

Content-Disposition: inline; filename="test.csv"

Content-Transfer-Encoding: base64

MSwyCg==

--FILEBOUNDARY--

然后就可以通过sendmail命令发送出去。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值