如何在 Unix / Linux 中使用 mail 命令发送文本文件的内容
我想在 Unix / Linux 操作系统中使用 mail 命令发送一封包含文本文件内容的电子邮件。我该怎么做?
mail 命令或 mailx 命令是 Unix 和 Linux 下的智能邮件处理系统。如果您使用以下语法在 Unix、*BSD 或 Linux 计算机上使用 mail 命令发送文本文件的内容,将会很有帮助。
mail 命令或 mailx 命令是 Unix 和 Linux 下的智能邮件处理系统。如果您使用以下语法在 Unix、*BSD 或 Linux 计算机上使用 mail 命令发送文本文件的内容,将会很有帮助。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 或 Unix 终端 |
类别 | 网络实用程序 |
操作系统兼容性 | AIX • Alma • Alpine • Arch • BSD • CentOS • Debian • Fedora • FreeBSD • HP-UX • Linux • macOS • Mint • NetBSD • OpenBSD • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • Unix • WSL |
预计阅读时间 | 3 分钟 |
使用邮件命令发送文本文件内容的语法
打开终端,然后在 Linux 上尝试以下GNU/mail命令语法:
mail -s '{Subject}' {someone@somewhere-tld} < {/path/to/a/file.txt} mail -s 'Subject-Here' you@example.com < input.file mail -s 'Uptime Report' you@example.com < /tmp/output.txt # change or set FROM email id: mail -r 'from@your-com-tld' -s 'Uptime Report' you@example.com < /tmp/output.txt mail -r 'sysadmin@example.com' -s 'Uptime Report' you@example.com < /tmp/output.txt
在哪里,
- -s 'Subject':在命令行上指定主题。
- you@example.com:向电子邮件用户发送。
- /tmp/output.txt:使用mail命令发送/tmp/output.txt文件的内容。
- -r 'from@your-com-tld':发送邮件时使用 from@your-com-tld 地址作为返回地址。仅适用于 GNU/mail 命令。
您的 Unix 或 Linux 机器上需要正确配置的电子邮件服务器,以便将电子邮件路由到您的网络之外。请参阅如何使用 Postfix MTA 配置 AWS SES或如何配置 Postfix 中继主机 (smarthost) 以使用外部 smptd 发送电子邮件。
关于从 FreeBSD 或 macOS 机器发送电子邮件的说明
在 FreeBSD、OpenBSD、NetBSD 或 macOS 上,语法略有不同,它们附带BSD版本的 mail/mailx 命令。例如:
mail -s '{SUBJECT}' {someone@somewhere-dot-tld} </path/to/input.txt mail -s '{SUBJECT}' -c {cc-email-id} -b {bcc-email-id} {someone@somewhere-dot-tld} </path/to/input.txt
如何在 FreeBSD/Linux/Unix 上从命令行使用 sendmail 更改发件人地址?
但是,BSD 版本的 mail/mailx 包括旧版本的 GNU/mail 都不支持-rto 状态的返回/发件人邮件地址。因此,我们需要直接使用 sendmail 命令。语法如下:
cat my-email.txt | sendmail -f {from-email-id} -t {to-email-id} cat my-email-body.txt | sendmail -f sysadmin@example.com -t devuser@example.com
以下是您需要放入my-email.txt文件中的内容:
To: Vivek Gite <devuser@example.com> From: CLI Alert <sysadmin@example.com> Subject: FreeBSD server hard disk failed Hi, server disk failed. Replace it as soon as possible.
Postfix 用户可以进行伪装并更改传出的 SMTP 电子邮件或邮件地址来设置默认的发件人/返回电子邮件地址。
从Unix命令行发送电子邮件作为附件
先决条件
默认情况下,您的系统上可能未安装mutt命令。因此,请使用Alpine Linux 上的apk 命令、 RHEL 等上的dnf 命令/ yum 命令、Debian、Ubuntu 等上的apt 命令/ apt-get 命令、SUSE/OpenSUSE 上的 zypper 命令、Arch Linux 上的 pacman 命令来安装mutt。
可以使用mutt 命令或uuencode 命令,如下所述:
默认情况下,您的系统上可能未安装mutt命令。因此,请使用Alpine Linux 上的apk 命令、 RHEL 等上的dnf 命令/ yum 命令、Debian、Ubuntu 等上的apt 命令/ apt-get 命令、SUSE/OpenSUSE 上的 zypper 命令、Arch Linux 上的 pacman 命令来安装mutt。
### Attach /tmp/filelist.tar.gz and read the content of a text using /tmp/body.txt ### mutt -s "Backup status" -a /tmp/filelist.tar.gz you@example.com < /tmp/body.txt
可以将cat 命令与 uuencode 命令组合,如下所示:
### Attach /tmp/list.tar.gz and and send it ### uuencode /tmp/list.tar.gz /tmp/list.tar.gz | mailx -s "Reports" user@eu.corp.example.com ### Email photo.png along with a text message read from body.txt ## (cat body.txt; uuencode photo.png photo.png) | mail -s "Subject" user@example.com
这就是您在 Unix 或 Linux 系统下使用 mail 或 mailx 命令(包括附件)发送文本文件内容的方法。
总结
您学习了如何使用 mail 命令在 Linux 和类 Unix 系统上从命令行发送电子邮件。mail 命令的语法在 Unix 或 Linux 上有所不同。因此,我建议您使用 man 命令或 help 命令阅读本地文档:
$ man mail
$ man uuencode
$ man cat
$ man mailx
$ man sendmail