linux mail 发送邮件附件
在很多场景中我们会使用Shell命令来发送邮件,而且我们还可能在邮件里面添加附件,本文将介绍使用Shell命令发送带附件邮件的几种方式,希望对大家有所帮助。
使用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_limitmessage_size_limit = 51200000echo "message_size_limit = 102400000" >> /etc/postfix/main.cf && service postfix reloadReloading Postfix configuration...done. |
第二种:
[root@iteblog.com ~]$ postconf -e message_size_limit=302400000[root@iteblog.com ~]$ service postfix restartShutting down postfix: [ OK ]Starting postfix: [ OK ][root@iteblog.com ~]$ postconf message_size_limitmessage_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 smtpTrying 127.0.0.1...Connected to localhost.Escape character is '^]'.220 www.iteblog.com ESMTP PostfixHELO iteblog.com250 www.iteblog.commail from: hadoop@iteblog.com250 2.1.0 Okrcpt to: hadoop@iteblog.com250 2.1.5 Okdata354 End data with <cr><lf>.<cr><lf>Subject: 这里输入邮件标题这里输入邮件内容这是内容.250 2.0.0 Ok: queued as C99B626Dquit 221 2.0.0 ByeConnection 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.comTo: hadoop@iteblog.comMIME-Version: 1.0Subject: Your InvoiceContent-Type: multipart/mixed; boundary="FILEBOUNDARY"--FILEBOUNDARYContent-Type: multipart/alternative; boundary="MSGBOUNDARY"--MSGBOUNDARYContent-Type: text/html; charset=iso-8859-1Content-Disposition: inline<html> <body> This is content. </body></html>--MSGBOUNDARY----FILEBOUNDARYContent-Type: application/pdfContent-Disposition: inline; filename="iteblog.pdf"Content-Transfer-Encoding: base64JVBERi0xLjYNJeLjz9MNCjE1IDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDk1MTgvTyAxNy9FIDQ4ODcvTiAxL1QgOTIxNS9IIFsgNDU3IDE0OF0+Pg1lbmRvYmoNICAgICAgICAgICAgICAgICAgICAgOTVCRkY0RkU5RkRFNDk5NEM2MTUzRTMyMzk3RTIyPjxBQkY2QTYzNkY4NDhBRjQzOTA3NERFMzdGQkZBQTQ1Qj5dL0luZm8gMTQgMCBSL0xlbmd0aCA0OC9Sb290IDE2IDAgUi9TaXplIDE1L1R5cGUvWFJlZi9XWzEgMiAxXT4+c3RyZWFtDQpo3mJiAAImRmFxBiYGhhYgwfcKSDAtBhKMN4ASdxhBEkwggoERH8H4CyDAANfsBSUNCmVuZHN0cmVhbQ1lbmRvYmoNc3RhcnR4cmVmDQoxMTYNCiUlRU9GDQo=--FILEBOUNDARYContent-Type: text/csvContent-Disposition: inline; filename="test.csv"Content-Transfer-Encoding: base64MSwyCg==--FILEBOUNDARY-- |
然后就可以通过sendmail命令发送出去。
linux mail 发送邮件附件的更多相关文章
- linux mail 发送邮件
1.mail -s "Title“ 123456@163.com 只有主题,没有内容 2. 有邮件内容 echo "text" | mail -s "Tit ...
- Linux mail发送邮件
发送前一天的监控日志#!/bin/bash source /etc/profile time=`date -d '-1 day' "+%Y%m%d"` #判断服务是否已经启动 se ...
- Linux使用Mutt发送邮件/附件
使用Mutt发邮件极其方便,只需要一条命令即可发送或者批量发送邮件 功能说明:E-mail管理程序. 语 法:mutt [-hnpRvxz][-a<文件>][-b<地址>][- ...
- linux下使用自带mail发送邮件
linux下使用自带mail发送邮件 mailx工具说明: linux可以通过安装mailx工具,mailx是一个小型的邮件发送程序,一般可以通过该程序在linux系统上,进行监控linux系统状态并 ...
- mail如何在linux中发送邮件,使用163邮箱发信。
如何在linux中发送邮件,使用163邮箱发信. linux中,可以使用mail命令往外发送邮件,在使用前,只需要指定如下简单配置即可,这里演示用 163.com 邮箱发送至 qq.com ...
- Linux mail 命令参数
linux mail 命令参数: 使用mail发邮件时,必须先将sendmail服务启动. mail –s “邮件主题” –c”抄送地址” –b “密送地址” -- -f 发送人邮件地址 –F 发件人 ...
- Linux mail 命令使用
linux mail 命令参数: 使用mail发邮件时,必须先将sendmail服务启动. mail –s “邮件主题” –c”抄送地址” –b “密送地址” -- -f 发送人邮件地址 –F 发件人 ...
- Linux下发送邮件
Linux下发送邮件 1.配置 vim /etc/mail.rc 文件尾增加以下内容 set from=ymwugui@linuxidc.com smtp=smtp.sina.com.cn set s ...
- Linux mail 邮件发送
Linux mail 邮件介绍 在Linux系统下我们可以通过”mail“命令,发送邮件,在运维中通常我们它来实现邮件告警. 安装 (方案1) 一.安装邮件服务 yum install -y send ...
随机推荐
- html2canvas - 实现网页截图(+下载截图) 功能
实现:html2canvas + canvas.toDataURL 首先,引入依赖插件: import { html2canvas } from './html2canvas'; html2canva ...
- Toast 自定义
转:http://www.cnblogs.com/salam/archive/2010/11/10/1873654.html 1.默认效果 代码 Toast.makeText(getApplicati ...
- sencha touch list css(样式) 详解
/* *自定义列表页面 */ Ext.define('app.view.util.MyList', { alternateClassName: 'myList', extend: 'Ext.List' ...
- vue.js - 解决vue-cli打包后自动压缩代码
一.webpack中引入的压缩代码 /build/webpack.prod.conf.js const OptimizeCSSPlugin = require('optimize-css-assets ...
- 备忘,commons-codec中可能用到的一些加密字符串的方法
commons-codec中提供了一些加密解密字符串的方法,我们可以直接使用 1.MD5加密: String source = "source"; DigestUtils.md5H ...
- C程序设计语言习题(1-12)
统计行数.单词数,字符数的程序: #include<stdio.h> #define IN 1 /*在单词内*/ #define OUT 0 /*在单词外*/ int main() { i ...
- mysql rowid实现
) a, b b表是数据表
- ch 与等宽字体
难题 有的时候,特别想通过字符来判断元素的长度,比如: 多行文本溢出时,文字变省略号 文字一个个的显示 效果分别如下: 第一种情况下,如果可以通过字符的数量判断长度是否溢出,从而把最后几个字符替换成省 ...
- vue报错 Module not found: Error: Cannot resolve 'file' or 'directory'
炸了,我好写sell而组件,直接就用了,我的天哪 看你的写了吗,就用: Module not found: Error: Cannot resolve 'file' or 'directory' 页另 ...
- MPD大会北京上海两站圆满落幕
MPD大会北京上海两站圆满落幕 由麦思博(MSUP)主办的亚太软件研发团队管理峰会(以下简称MPD大会)分别于6月15及6月22日在北京.上海成功举办.国内外知名软件.互联网行业项目领头人及业内从业人 ...