linux mail 发送邮件附件

您所在的位置:网站首页 压缩包可以邮件发送吗安全吗 linux mail 发送邮件附件

linux mail 发送邮件附件

2024-07-11 08:49| 来源: 网络整理| 查看: 265

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

文章目录 1 使用mail命令 2 使用mutt命令 3 使用mailx命令 4 使用mpack命令 5 使用telnet命令发送邮件 6 使用sendmail命令发送邮件 使用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 [email protected]

在上面的命令中,-s 参数用于指定消息主题;-a 参数指定需要发送的附件路径,貌似这个不能发送多个附件。当然,我们可以将邮件的内容存到一个文件中,比如下面我们把邮件的内容存储到message.txt文件中,然后发送:

mail -s "邮件标题" -a file.txt [email protected] < message.txt 我们在发送附件的时候出现下面的错误:

 

send-mail: fatal: iteblog(40010): message file too big

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

[[email protected] ~]$ postconf message_size_limit message_size_limit = 51200000 echo "message_size_limit = 102400000" >> /etc/postfix/main.cf && service postfix reload Reloading Postfix configuration...done.

第二种:

[[email protected] ~]$ postconf -e message_size_limit=302400000 [[email protected] ~]$ service postfix restart Shutting down postfix:                                     [  OK  ] Starting postfix:                                          [  OK  ] [[email protected] ~]$ postconf message_size_limit message_size_limit = 302400000 [[email protected] ~]$

两种方法都可以设置。

使用mutt命令

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

$ sudo apt-get install mutt # yum install mutt

现在我们可以使用mutt命令发送带附件的邮件了:

echo "这里输入你邮件内容" | mutt -s "邮件标题"  [email protected] -a file.txt

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

使用mailx命令

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

$ sudo apt-get install mailutils # yum install mailx

然后可以使用下面命令发送带附件的邮件:

echo "这里输入你邮件内容" | mailx -s "邮件标题" -a file.txt [email protected] 使用mpack命令

首先使用下面命令安装好这个命令:

$ sudo apt-get install mpack # yum install mpack

然后可以使用下面命令发送带附件的邮件:

$ mpack -s "邮件标题" file [email protected] 使用telnet命令发送邮件

我们还可以使用telnet来发送邮件,使用起来稍微比直接用 mail 或者 mutt 命令复杂,使用如下:

[[email protected] ~]$ 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: [email protected] 250 2.1.0 Ok rcpt to: [email protected] 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="[email protected]" export MAILTO="[email protected]" 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; "         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: [email protected] To: [email protected] 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命令发送出去。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3