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

 更新时间:2019年12月11日 09:55:24   作者:Magesh Maruthamuthu  
这篇文章主要介绍了在 Linux 命令行发送邮件的 5 种方法,本教程中包含了最流行的 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 种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • linux下多个硬盘划分到同一挂载点问题

    linux下多个硬盘划分到同一挂载点问题

    在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成逻辑卷组,接着,从逻辑卷组中划分出逻辑卷,并进行格式化和挂载
    2025-02-02
  • subversion服务端配置步骤详解

    subversion服务端配置步骤详解

    本文主要介绍了subversion服务端配置步骤,安装TortoiseSVN做检出测试,大家参考使用吧
    2014-01-01
  • Linux下日志按日分割的shell

    Linux下日志按日分割的shell

    这篇文章主要介绍了Linux下日志按日分割的shell,需要的朋友可以参考下
    2016-03-03
  • Centos7中添加、删除Swap交换分区的方法

    Centos7中添加、删除Swap交换分区的方法

    Swap空间的作用是当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。这篇文章主要给大家介绍了关于Centos7中添加、删除Swap交换分区的相关资料,以及Centos7下增加swap分区大小的方法,需要的朋友可以参考下。
    2018-04-04
  • CentOS7如何重置root密码的方法

    CentOS7如何重置root密码的方法

    这篇文章主要介绍了CentOS7如何重置root密码的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • 不能在本地计算机启动 apache2.2解决方法

    不能在本地计算机启动 apache2.2解决方法

    这篇文章主要介绍了不能在本地计算机启动 apache2.2解决方法,本文的解决办法只需要修改一个配置参数即可,需要的朋友可以参考下
    2015-07-07
  • Linux进程池实现的详细指南

    Linux进程池实现的详细指南

    如果你了解过STL的底层设计,你会发现在其中会有一个叫做内存池的设计,其作用就是先申请出一片空间,如果后续你需要对你的容器进行扩容,所扩展的空间就从内存池里取的,本文给大家介绍了Linux进程池实现的详细指南,需要的朋友可以参考下
    2024-11-11
  • Linux命令学习总结:详解shutdown命令

    Linux命令学习总结:详解shutdown命令

    本篇文章主要介绍了Linux命令学习总结:详解shutdown命令,该命令可以安全关闭或者重新启动系统。有兴趣的可以了解一下。
    2016-12-12
  • Linux服务器如何设置启动自动登录

    Linux服务器如何设置启动自动登录

    在远程操作服务器时,配置自动登录可以带来便利,首先修改/etc/passwd文件,将root用户的密码字段清空,接着,修改/etc/gdm/custom.conf文件,在[daemon]部分添加或修改自动登录的用户信息,完成后重启服务器,即可实现用户自动登录
    2024-09-09
  • Linux文件编辑命令vi详细整理(总结)

    Linux文件编辑命令vi详细整理(总结)

    本篇文章主要介绍了Linux文件编辑命令详细整理(总结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07

最新评论