https://zhuanlan.zhihu.com/p/96897532

Linux系统更多的被用来做服务器系统,在运维的过程中难免我们需要编写脚本监控一些指标并定期发送邮件。

本教程将介绍如何在Linux系统中使用命令发送邮件,以下举例5 个命令行邮件客户端进行举例讲解。

5 个命令行邮件

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

工作原理

首先我们介绍下Linux中这些邮件命令的工作原理,它们是如何把邮件传递给收件人的。邮件命令通过撰写邮件并发送给一个本地邮件传输代理(MTA,如 sendmail、Postfix),请看下面流程讲解。

如何在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 系统安装 mailutils。

sudo apt-get install mailutils

对于 RHEL/CentOS 系统安装 mailx。

sudo yum install mailx

对于 Fedora 系统安装 mailx。

sudo dnf install mailx

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

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

echo "This is the mail body" | mail -s "Subject" linux265@163.com

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

echo "This is the mail body" | mail -a test1.txt -s "Subject" linux265@163.com
  • -a:用于在基于 Red Hat 的系统上添加附件。
  • -A:用于在基于 Debian 的系统上添加附件。
  • -s:指定消息标题。

如何在 Linux 上安装 mutt 命令

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

对于 Debian/Ubuntu 系统安装 mutt。

sudo apt-get install mutt

对于 RHEL/CentOS 系统安装 mutt。

sudo yum install mutt

对于 Fedora 系统安装 mutt。

sudo dnf install mutt

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

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

echo "This is the mail body" | mutt -s "Subject" linux265@163.com

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

echo "This is the mail body" | mutt -s "Subject" linux265@163.com -a test1.txt

如何在 Linux 上安装 mpack 命令

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

对于 Debian/Ubuntu 系统安装 mpack。

sudo apt-get install mpack

对于 RHEL/CentOS 系统安装mpack。

sudo yum install mpack

对于 Fedora 系统安装 mpack。

sudo dnf install mpack

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

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

echo "This is the mail body" | mpack -s "Subject" linux265@163.com

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

echo "This is the mail body" | mpack -s "Subject" linux265@163.com -a test1.txt

如何在 Linux 上安装 sendmail 命令

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

对于 Debian/Ubuntu 系统安装 sendmail。

sudo apt-get install sendmail

对于 RHEL/CentOS 系统安装 sendmail。

sudo yum install sendmail

对于 Fedora 系统安装 sendmail。

sudo dnf install sendmail

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

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

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

如何在 Linux 上安装 ssmtp 命令

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

对于 Debian/Ubuntu 系统安装 ssmtp。

sudo apt-get install ssmtp

对于 RHEL/CentOS 系统安装 ssmtp。

sudo yum install ssmtp

对于 Fedora 系统安装 ssmtp。

sudo dnf install ssmtp

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

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

echo -e "Subject: Test Mail\nThis is the mail body" > /tmp/ssmtp-mail.txt
ssmtp linux265@163.com < /tmp/ssmtp-mail.txt

[转帖]如何在Linux系统中使用命令发送邮件的更多相关文章

  1. Linux系统中last命令的用法

    1.作用 linux系统中last命令的作用是显示近期用户或终端的登录情况,它的使用权限是所有用户.通过last命令查看该程序的log,管理员可以获知谁曾经或企图连接系统. 2.格式 last [—R ...

  2. linux系统中ls命令的用法

    普通文件: -,f目录文件: d链接文件(符号链接): L设备文件:字符设备:c块设备:b命名管道: p套接字文件: s linux文件时间戳 时间分为三种类型:创建时间,修改时间:open访问时间: ...

  3. [转]Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法

    'dmesg'命令显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构.cpu.挂载的硬件,RAM等多个运行级别的大量的系统信息.当计算机启动时,系统内核(操作系统的核心部分)将会被加载到 ...

  4. Linux系统中‘dmesg’命令处理故障和收集系统信息的7种用法

    转自:https://linux.cn/article-3587-1.html 'dmesg'命令显示linux内核的环形缓冲区信息,我们可以从中获得诸如系统架构.cpu.挂载的硬件,RAM等多个运行 ...

  5. 如何在Linux系统中安装VMware

    首先打开vmware官网的下载链接:https://my.vmware.com/web/vmware/info/slug/desktop_end_user_computing/vmware_works ...

  6. 如何在linux系统中设置静态ip地址

    在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 开始编辑,填写ip地址.子网掩码.网关.DNS等.其中"红框内的信息"是必须 ...

  7. Linux 系统中 sudo 命令的 10 个技巧

    概览 sudo 表示 "superuser do". 它允许已验证的用户以其他用户的身份来运行命令.其他用户可以是普通用户或者超级用户.然而,大部分时候我们用它来以提升的权限来运行 ...

  8. Linux系统中yum 命令讲解

    (一)yum介绍 Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管理,能够从指定 ...

  9. Linux系统中sysctl命令详解

    sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys目录下.sysctl配置与显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发.IP碎 ...

  10. linux系统中,tee命令的使用

    需求描述: 今天在看nginx内容的过程,遇到了tee这个命令,所以查询了下,在这里记录下使用方法. 操作过程: 1.执行以下的命令 [root@testvm ~]# uname -n | tee h ...

随机推荐

  1. TypeChat、JSONSchemaChat实战 - 让ChatGPT更听你的话

    TypeChat 用一句话概括,就是用了它你可以让大语言模型(比如 ChatGPT)将自然语言转换成特定类型的 JSON 数据. 我们在使用 ChatGPT 的时候,大致流程如下: 假如我们需要 Ch ...

  2. 【scikit-learn基础】--『监督学习』之 支持向量机分类

    支持向量机也是一种既可以处理分类问题,也可以处理回归问题的算法.关于支持向量机在回归问题上的应用,请参考:TODO 支持向量机分类广泛应用于图像识别.文本分类.生物信息学(例如基因分类).手写数字识别 ...

  3. 文心一言 VS 讯飞星火 VS chatgpt (57)-- 算法导论6.4 1题

    文心一言 VS 讯飞星火 VS chatgpt (57)-- 算法导论6.4 1题 一.参照图 6-4 的方法,说明 HEAPSORT 在数组 A=(5,13,2,25,7,17,20,8,4)上的操 ...

  4. C++篇:第三章_控制结构_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 三.控制结构 for循环的结束判定条件是boolean型 只要适当地修改代码,就 ...

  5. 光大银行刘淼:基于华为云GaussDB(DWS) 数据仓库创新实践

    摘要:面向未来数据平台3.0要做架构减法,平台由N->1,华为云GaussDB(DWS)未来作为数据仓库唯一平台,数据链路实现从数据湖直接到华为云GaussDB(DWS)数据仓库. 日前,华为举 ...

  6. JS引擎(0):JavaScript引擎群雄演义—起底JavaScript引擎

    JavaScript 既是一个 面向过程的语言 又是一个 面向对象的语言.在 JavaScript 中,通过在运行时给空对象附加方法和属性来创建对象,与编译语言如 C++ 和 Java 中常见的通过语 ...

  7. centos8 nginx server root指向自定义目录如(/data/www),访问报403 404,所有文件用户组为root 权限为755

    centos8 yum 自定义安装的nginx,修改nginx默认默认目录,指向自定义的目录 /data/www,访问报404,所有文件用户组为root 权限为755 nginx 以user 为ngi ...

  8. 火山引擎 DataTester:抖音的设计团队是如何用 A/B 测试实现高效优化的?

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 对 C 端产品而言,产品的每一个细节设置都或多或少影响着用户的产品体验,本文介绍字节跳动的 A/B 实验文化的同时 ...

  9. HTML 首页 欢迎页

    HTML 首页 欢迎页,将下面代码复制出来,贴到HTML中,直接运行 <!DOCTYPE html> <html lang="en"> <head&g ...

  10. CentOS 7 qemu 创建虚拟机简单流程

    查看是否支持虚拟化 egrep -o '(vmx|svm)' /proc/cpuinfo 如果有显示则支持虚拟化,没有显示则不支持   安装qemu 和virt 系列软件包 yum install q ...