在 Linux 命令行发送邮件的 5 种方法(推荐)

当你需要在 shell 脚本中创建邮件时,就需要用到命令行发送邮件的知识。Linux 中有很多命令可以实现发送邮件。本教程中包含了最流行的 5 个命令行邮件客户端,你可以选择其中一个。这 5 个命令分别是:

  • mail / mailx
  • mutt
  • mpack
  • sendmail
  • ssmtp

工作原理

我先从整体上来解释下 Linux 中邮件命令怎么把邮件传递给收件人的。邮件命令撰写邮件并发送给一个本地邮件传输代理(MTA,如 sendmail、Postfix)。邮件服务器和远程邮件服务器之间通信以实际发送和接收邮件。下面的流程可以看得更详细。

1) 如何在 Linux 上安装 mail/mailx 命令

mail 命令是 Linux 终端发送邮件用的最多的命令。mailx 是 mail 命令的更新版本,基于 Berkeley Mail 8.1,意在提供 POSIX mailx 命令的功能,并支持 MIME、IMAP、POP3、SMTP 和 S/MIME 扩展。mailx 在某些交互特性上更加强大,如缓冲邮件消息、垃圾邮件评分和过滤等。在 Linux 发行版上,mail 命令是 mailx 命令的软链接。可以运行下面的命令从官方发行版仓库安装 mail 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET命令 或 APT命令 安装 mailutils。

$ sudo apt-get install mailutils

对于 RHEL/CentOS 系统,使用 YUM命令 安装 mailx。

$ sudo yum install mailx

对于 Fedora 系统,使用 DNF 命令 安装 mailx。

$ sudo dnf install mailx

1a) 如何在 Linux 上使用 mail 命令发送邮件

mail 命令简单易用。如果你不需要发送附件,使用下面的 mail 命令格式就可以发送邮件了:

$ echo "This is the mail body" | mail -s "Subject" 2daygeek@gmail.com

如果你要发送附件,使用下面的 mail 命令格式:

$ echo "This is the mail body" | mail -a test1.txt -s "Subject" 2daygeek@gmail.com

-a:用于在基于 Red Hat 的系统上添加附件。
-A:用于在基于 Debian 的系统上添加附件。
-s:指定消息标题。

2) 如何在 Linux 上安装 mutt 命令

mutt 是另一个很受欢迎的在 Linux 终端发送邮件的命令。mutt 是一个小而强大的基于文本的程序,用来在 unix 操作系统下阅读和发送电子邮件,并支持彩色终端、MIME、OpenPGP 和按邮件线索排序的模式。可以运行下面的命令从官方发行版仓库安装 mutt 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET命令 或 APT 命令 安装 mutt。

$ sudo apt-get install mutt

对于 RHEL/CentOS 系统,使用 YUM命令 安装 mutt。

$ sudo yum install mutt

对于 Fedora 系统,使用 DNF 命令 安装 mutt。

$ sudo dnf install mutt

2b) 如何在 Linux 上使用 mutt 命令发送邮件

mutt 一样简单易用。如果你不需要发送附件,使用下面的 mutt 命令格式就可以发送邮件了:

$ echo "This is the mail body" | mutt -s "Subject" 2daygeek@gmail.com

如果你要发送附件,使用下面的 mutt 命令格式:

$ echo "This is the mail body" | mutt -s "Subject" 2daygeek@gmail.com -a test1.txt

3) 如何在 Linux 上安装 mpack 命令

mpack 是另一个很受欢迎的在 Linux 终端上发送邮件的命令。mpack 程序会在一个或多个 MIME 消息中对命名的文件进行编码。编码后的消息被发送到一个或多个收件人。可以运行下面的命令从官方发行版仓库安装 mpack 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令 或 APT 命令 安装 mpack。

$ sudo apt-get install mpack

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 mpack。

$ sudo yum install mpack

对于 Fedora 系统,使用 DNF 命令 安装 mpack。

$ sudo dnf install mpack

3a) 如何在 Linux 上使用 mpack 命令发送邮件

mpack 同样简单易用。如果你不需要发送附件,使用下面的 mpack 命令格式就可以发送邮件了:

$ echo "This is the mail body" | mpack -s "Subject" 2daygeek@gmail.com

如果你要发送附件,使用下面的 mpack 命令格式:

$ echo "This is the mail body" | mpack -s "Subject" 2daygeek@gmail.com -a test1.txt

4) 如何在 Linux 上安装 sendmail 命令

sendmail 是一个上广泛使用的通用 SMTP 服务器,你也可以从命令行用 sendmail 发邮件。可以运行下面的命令从官方发行版仓库安装 sendmail 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令 或 APT 命令安装 sendmail。

$ sudo apt-get install sendmail

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 sendmail。

$ sudo yum install sendmail

对于 Fedora 系统,使用 DNF 命令 安装 sendmail。

$ sudo dnf install sendmail

4a) 如何在 Linux 上使用 sendmail 命令发送邮件

sendmail 同样简单易用。使用下面的 sendmail 命令发送邮件。

$ echo -e "Subject: Test Mail\nThis is the mail body" > /tmp/send-mail.txt
$ sendmail 2daygeek@gmail.com < send-mail.txt

5) 如何在 Linux 上安装 ssmtp 命令

ssmtp 是类似 sendmail 的一个只发送不接收的工具,可以把邮件从本地计算机传递到配置好的 邮件主机(mailhub)。用户可以在 Linux 命令行用 ssmtp 把邮件发送到 SMTP 服务器。可以运行下面的命令从官方发行版仓库安装 ssmtp 命令。

对于 Debian/Ubuntu 系统,使用 APT-GET 命令 或 APT 命令安装 ssmtp。

$ sudo apt-get install ssmtp

对于 RHEL/CentOS 系统,使用 YUM 命令 安装 ssmtp。

$ sudo yum install ssmtp

对于 Fedora 系统,使用 DNF 命令 安装 ssmtp。

$ sudo dnf install ssmtp

5a) 如何在 Linux 上使用 ssmtp 命令发送邮件

ssmtp 同样简单易用。使用下面的 ssmtp 命令格式发送邮件。

$ echo -e "Subject: Test Mail\nThis is the mail body" > /tmp/ssmtp-mail.txt
$ ssmtp 2daygeek@gmail.com < /tmp/ssmtp-mail.txt

总结

以上所述是小编给大家介绍的在 Linux 命令行发送邮件的 5 种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

时间: 2019-12-10

浅析linux下如何用脚本自动发送文本mail邮件

1. 安装msmtp luther@gliethttp:~$ sudo apt-get install msmtp 2. 编辑配置脚本(~/.msmtprc是默认配置文件,也可以使用-C选项指定配置文件路径) luther@gliethttp:~$ vim msmtprc #添加如下内容 defaults #logfile /home/luther/msmtp.log account luther_test host mail.gliethttp.cn from luther@gliethttp

linux shell发送Email邮件的方法详解

一封最简单的邮件 echo -e "To: handy1989@qq.com\nCC: handy1989@qq.com\nFrom: handy<handy@test.com>\nSubject: test\n\nhello world" | sendmail -t 看上去有点复杂,其实就是sendmail程序从标准输入读取邮件源码,-t参数表示从邮件源码提取收件人信息,然后发送到收件人的邮件服务器,我们稍做整理,将邮件源码保存在email.txt中如下 To: hand

Linux服务器下PHPMailer发送邮件失败的问题解决

需求 更换服务器之后,我发现我的发送邮件功能失效了!原来的服务器是可以的,一定是哪里出问题了,决定来排查一下.我是用的PHPMailer,SMTP方式发送邮件的. 排查过程 这种方式首先PHP要开启sockets拓展,查了一下phpinfo页面,是开启的: 看了一下openssl也是开启(因为拿了qq邮箱来测),所以没问题: 那就再看一下allow_url_fopen,开启的,没问题: 是不是禁用了函数?没有禁用,没问题: 那配置上就没有问题了,我就想,是不是端口被占用了? 运行一下:netst

Linux部署msmtp+mutt发送邮件功能

一.前言 首先,得明白发送一封邮件的流程,下面一段理论摘抄自廖雪峰的官网网站https://www.liaoxuefeng.com/article/00137387674890099a71c0400504765b89a5fac65728976000 """ 我们通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,

linux脚本实现自动发送和收取邮件的设置方法

1. 命令行模式下的发送邮件 1.1 安装sendemail 2.2 使用sendemail和举例 2. 命令行模式下的收取邮件 2.1 安装getmail4 2.2 配置getmail4和简单举例 2.3 用munpack从邮件中抽取附件 1. 命令行模式下的发送邮件 1.1 安装sendemail 在Ubuntu下可以用新立得软件包管理器搜索安装,或者在终端运行: sudo apt-get install sendemail 建议在安装前先安装另外两个包:libio-socket-ssl-p

linux下通过命令行获取gmail的新邮件

linux下通过命令行获取gmail的新邮件,不需输入@gmail.com部分 #!/bin/bash num="\033[1;36m" end="\033[0m" read -p "Enter your mail: " name read -p "Enter pass of mail: " pass atom=`wget -qO - https://$name:$pass@mail.google.com/mail/feed/

linux下python使用sendmail发送邮件

本文实例为大家分享了python使用sendmail发送邮件的具体代码,供大家参考,具体内容如下 参考链接:How do I send mail from a Python script? 使用linux下的sendmail程序来发送邮件,利用popen函数(python docs关于popen函数)可以直接调用linux系统程序,需要指定程序所在的位置. python代码: #!/usr/bin/python # -*- coding: UTF-8 -*- #Author: Victor Lv

Linux 下 Python 实现按任意键退出的实现方法

某天在群内有同学问到,在python下我用input或者raw_input都得输入完后回车才能获取到输入的值,那如何实现任意键退出暂停等功能呢,我当时也没有多想,因为接触python时间也不算长,主要还是Linux下的. 当然,Windows系统下会稍微简单一些,Windows系统下如果你安装了python的环境,默认自带的一个模块叫做msvcrt,import msvcrt,然后调用msvcrt.getch()即可.接下来即Linux下实现python版本的按任意键退出. 初学Python时在

linux下python抓屏实现方法

本文实例讲述了linux下python抓屏实现方法.分享给大家供大家参考.具体实现代码如下: #!/usr/bin/python '''by zevolo, 2012.12.20 ''' import gtk.gdk import gtk import glib class MyRect(): def __init__(self, x = 0, y = 0, w = 0, h = 0): self.x = x self.y = y self.w = w self.h = h def __init

Linux下Python脚本自启动与定时任务详解

前言 最近同事问了一个关于Python脚本自启动与定时任务的问题,发现很多的朋友对这块都不是特别的熟悉,所以本文主要给大家介绍的是关于Linux下Python脚本自启动与定时任务的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍: 一.让Python随Linux开机自动运行 准备好要自启的脚本auto.py 用root权限编辑以下文件 sudo vim /ect/rc.local 在exit 0上面编辑启动脚本的命令 /usr/bin/python3.5 /home/edgar

Linux下Python脚本自启动和定时启动的详细步骤

一.Python开机自动运行 假如Python自启动脚本为 auto.py .那么用root权限编辑以下文件: sudo vim /etc/rc.local 如果没有 rc.local 请看 这篇文章 在exit 0上面编辑启动脚本的命令 /usr/bin/python3 /home/selfcs/auto.py > /home/selfcs/auto.log 最后重启Linux,脚本就能自动运行并打印日志了. 二.让Python脚本定时启动 用root权限编辑以下文件 sudo vim /et

linux 下python多线程递归复制文件夹及文件夹中的文件

本文是利用python 复制文件夹 刚开始写了一个普通的递归复制文件夹    然后想了想 觉得对io频繁的程序 threading 线程还比较友好  就写了个多线程版本的  最恶心人的地方就是路径  其他都还好吧 import os import threading import multiprocessing length_of_folder = 0 def copyfile(Path): if os.path.isdir(Path): print("-----------%s" %

Windows和Linux下Python输出彩色文字的方法教程

前言 最近在项目中需要输出彩色的文字来提醒用户,以前写过,但是只能在win上面运行. 今天搜了下看有没有在win和Linux上通用的输出彩色文字的模块,结果发现没有,,于是就自己弄了一个,分享下,以后用的时候翻翻博客,方便别人也方便自己. win下输出彩色文字,网上有两种方法一种是用system执行命令来设置颜色,感觉还是不太好,用ctypes模块实现更好点. linux下设置颜色,网上只找到了一种方法,下面不废话了,直接贴下代码: 示例代码 import platform if 'Window

Linux下python与C++使用dlib实现人脸检测

python 与 C++ dlib人脸检测结果对比,供大家参考,具体内容如下 说明: 由于项目需求发现Linux下c++使用dlib进行人脸检测和python使用dlib检测,得到的结果出入比较大,于是写了测试用例,发现影响结果的原因有但不限于: 1.dlib版本不同(影响不大,几个像素的差别) 2.dlib 人脸检测中detector()第二个参数的设置测试结果如下: python PDlib.py: # -*- coding: utf-8 -*- import sys import cv2

linux下python中文乱码解决方案详解

1. 场景描述 linux服务器下安装了Anaconda3,执行Pyhton的K-means算法,结果出现如下图的中文字符乱码.上次已经解决了,忘记记录解决流程了,这次配置了一台新的服务器,又出现,默认不配置的话matplotlib画图就会乱码,这次把解决过程记录下,希望能帮助自己和有需要的朋友. 2. 解决方案 网上有好几个解决方案,只介绍自己实战可行的. 1. 查看matplotlib字体位置 python import matplotlib print(matplotlib.matplot

Linux下Python安装完成后使用pip命令的详细教程

一.很多读者Python安装完成之后,想要下载相关的包,例如:numpy.pandas等Python中这些基础的包,但是,发现pip根本用不了,主要表现在一下几种情况: 二.出现这种情况其实并不意外,虽然Python3.6.3自带了pip,但是安装Python3.6.3之后还需要我们进行进一步的配置.下面配置pip3的环境变量. 配置完成之后,使之生效 三.现在可以进行Python包的安装了 进入python导入numpy包发现没有报错,说明安装成功. 四.如果不习惯用pip3进行下载的话也可以