安装 msmtp 即可用命令行发送邮件(不含收件)。以下配置在 macOS 下测试通过。

1. 启用客户端收件

登录邮箱网页设置开启客户端收件权限,并且启用独立密码。以下收件步骤用微软邮箱测试通过。

2. 安装 msmtp

安装 msmtp 发件箱,官网

MacOS 下安装:

brew install msmtp

Linux 参考官网的编译指令,或对应的软件包管理安装。

# debian 或 ubuntu 安装
apt install msmtp

Windows 下官方的包管理工具 winget 暂时未有 msmtp,第三方的 Chocolatey 或 Scoop 工具有 msmtp,或自己按官网说明编译安装。

# 先安装 Chocolatey ,用管理员身份运行powershell,然后运行:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
#  以上安装Chocolatey命令可能会过时,请以官方安装命令为准

# 安装 Chocolatey 包管理器后,安装 msmtp:
choco install msmtp.portable

3. 设置

安装后,新建 ~/.mailrc 文件,内容如下:

set sendmail=/usr/local/bin/msmtp

新建 ~/.msmtprc 配置文件,内容如下:

# Use an external SMTP server with insecure authentication.
# (manually choose an insecure authentication method.)
# Note that the password contains blanks.

defaults

####################################################################
# A sample configuration using Gmail
####################################################################

# account name is "gmail".
# You can select this account by using "-a gmail" in your command line.
account outlook
host outlook.office365.com
tls on
tls_starttls on
tls_certcheck on
port 587
auth login
from 用户名@outlook.com
user 用户名@outlook.com
password 密码

# If you don't use any "-a" parameter in your command line,
# the default account "gmail" will be used.
account default: outlook

微软邮箱,参考收发服务器配置:

imap-mail.outlook.com  # imap 接收服务器1
outlook.office365.com  # 或 imap 接收服务器2
143 # 端口 或 993 端口
TLS  # 加密方法

smtp-mail.outlook.com  # smtp 发送服务器1
smtp.office365.com  # 或 smtp 发送服务器2
587 # 端口
STARTTLS  # 加密方法

4. 测试发邮件

echo "this is a test, 示例内容。\\n现在换行。" | mail -s "示例标题 `date` " 收件用户名@outlook.com