163邮箱邮件通知功能配置
前言
- 本文目标: 为耗时长的命令行任务(如PetaLinux编译)配置一个邮件通知脚本。脚本将在命令执行成功或失败后,自动发送邮件提醒。
获取163邮箱授权码
此为后续配置的前提,用于第三方客户端的SMTP认证。
- 登录
mail.163.com
。 - 进入 设置 -> POP3/SMTP/IMAP。
- 确保 IMAP/SMTP服务 已开启。
- 在“授权码”管理处,获取一个16位的授权码并保存。后续配置中的密码将使用此授权码。
配置 msmtp
客户端
安装依赖:
1
2sudo apt update
sudo apt install msmtp msmtp-mta mailutils创建并编辑配置文件:
1
nano ~/.msmtprc
写入配置:
将以下内容粘贴至~/.msmtprc
。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19# Default settings
defaults
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile ~/.msmtp.log
# 163 Account
account 163
host smtp.163.com
port 465
tls_starttls off # Use TLS on port 465
from "your_name <your-email@163.com>"
user your-email@163.com
password your_163_authorization_code
# Set default account
account default : 163注意: 替换
from
,user
, 和password
字段为你自己的信息。设置文件权限 (安全关键):
1
chmod 600 ~/.msmtprc
创建 notify
别名函数
将邮件发送逻辑封装为快捷命令。
编辑
~/.bashrc
:1
nano ~/.bashrc
在文件末尾添加函数:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25function notify() {
# 执行传递给 notify 的所有参数,即您的原始命令
"$@"
# 获取上一个命令的成功/失败状态码
local exit_code=$?
# 将命令本身作为字符串,用于邮件内容
local command_str="$*"
# 定义发件人邮箱,这必须与您在msmtp中配置的user一致
local sender_email="your-email@163.com"
if [ $exit_code -eq 0 ]; then
# 成功时发送的邮件
echo "命令已于 $(date) 成功完成:
'$command_str'" | mail -s "✅ 任务成功" -r "$sender_email" "$sender_email"
else
# 失败时发送的邮件
echo "命令已于 $(date) 失败 (退出码: $exit_code):
'$command_str'" | mail -s "❌ 任务失败" -r "$sender_email" "$sender_email"
fi
}- 注意: 替换
local sender_email="..."
中的邮箱地址。
- 注意: 替换
激活配置:
1
source ~/.bashrc
使用方法
在任意命令前添加 notify
即可。
示例:
notify petalinux-build --sdk
notify tar -czf backup.tar.gz /large_directory