安装 msmtp 即可用命令行发送邮件(不含收件)。以下配置在 macOS 下测试通过。
1. 启用客户端收件
登录邮箱网页设置开启客户端收件权限,并且启用独立密码。以下收件步骤用微软邮箱测试通过。
2. 安装 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