📜  使用 Bash 脚本发送邮件(1)

📅  最后修改于: 2023-12-03 14:49:37.462000             🧑  作者: Mango

使用 Bash 脚本发送邮件

在 Web 2.0 时代,很多程序员都使用在线电子邮件客户端,比如 Gmail、Outlook 等。但是如果你想要脚本化一些任务,比如自动化测试、批量发送通知等,使用命令行或 Bash 脚本发送邮件就会方便很多。

原理

使用 Bash 脚本发送邮件的原理很简单,就是通过命令行工具发送邮件。在 Linux 系统上,我们可以使用 mail 或者 mutt 等命令行工具发送邮件。

使用 mail 命令发送邮件

mail 命令是 Linux 系统自带的命令行工具。它的基本用法是:

echo "邮件内容" | mail -s "邮件主题" 收件人邮箱地址

例如,发送一封邮件给 example@gmail.com:

echo "这是一封测试邮件" | mail -s "测试邮件" example@gmail.com

如果要发送带附件的邮件,可以使用 -a 参数添加附件:

echo "请查收附件" | mail -s "带附件的邮件" -a /path/to/attachment.pdf example@gmail.com
使用 mutt 命令发送邮件

mutt 是一个类似于 Vim 的命令行邮件客户端,它可以让你在终端上发送和接收电子邮件。安装 mutt 命令:

sudo apt-get install mutt

使用 mutt 命令发送邮件:

echo "邮件内容" | mutt -s "邮件主题" 收件人邮箱地址

带附件的邮件:

echo "请查收附件" | mutt -s "带附件的邮件" -a /path/to/attachment.pdf example@gmail.com
使用 shell 函数封装

为了方便在脚本中调用邮件发送函数,我们可以使用 shell 函数封装 mail 或 mutt 命令。例如:

#!/bin/bash

function send_mail {
    local subject="$1"
    local recipient="$2"
    local message="$3"
    local attachment="$4"

    if [[ -n "$attachment" ]]; then
        mutt -s "$subject" -a "$attachment" -- "$recipient" <<< "$message"
    else
        mutt -s "$subject" -- "$recipient" <<< "$message"
    fi
}

send_mail "测试邮件" example@gmail.com "这是一封测试邮件" "/path/to/attachment.pdf"
其他注意事项
  • 发送邮件时,需要确保发送机器的 IP 地址和域名没有被邮件服务器阻拦过。
  • 发送邮件之前,最好先在命令行手动测试一下。
  • 如果邮件内容含有 shell 命令,需要考虑 shell 注入等安全问题。

以上是使用 Bash 脚本发送邮件的介绍。祝你愉快地编写自动化邮件发送脚本!