在Ubuntu上定时发送邮件可通过以下步骤实现,核心工具为cron定时任务和邮件发送工具(如mail、ssmtp等):
sudo apt update
sudo apt install mailutils ssmtp # mailutils包含mail命令,ssmtp用于SMTP转发
/etc/ssmtp/ssmtp.conf,填入SMTP服务器信息(如Gmail):mailhub=smtp.gmail.com:587
AuthUser=your_email@gmail.com
AuthPass=your_app_password # 建议使用应用专用密码
UseSTARTTLS=YES
注意:Gmail需启用“允许不够安全的应用”或使用应用专用密码。
简单文本邮件:
创建脚本send_email.sh,内容如下:
#!/bin/bash
RECIPIENT="recipient@example.com"
SUBJECT="定时邮件测试"
BODY="这是通过Ubuntu定时发送的邮件内容"
echo "$BODY" | mail -s "$SUBJECT" "$RECIPIENT"
赋予执行权限:
chmod +x send_email.sh
带附件的邮件:
安装mpack工具:
sudo apt install mpack
脚本示例:
echo "请查收附件" | mail -s "带附件的邮件" -a report.pdf recipient@example.com
crontab编辑定时规则:crontab -e
添加规则(如每天上午10点发送):0 10 * * * /path/to/send_email.sh >> /path/to/email.log 2>&1
说明:
>>将输出追加到日志文件,方便调试。
动态内容生成:
在脚本中调用系统命令生成邮件内容,例如磁盘监控:
#!/bin/bash
SUBJECT="磁盘空间告警"
BODY=$(df -h | awk 'NR==2{if($5+0>90) print "警告:根分区使用率超过90%"}')
[ -n "$BODY" ] && echo "$BODY" | mail -s "$SUBJECT" admin@example.com
每小时执行一次:
0 * * * * /path/to/disk_monitor.sh
使用其他邮件工具:
mutt:支持HTML邮件和附件,需配合msmtp配置SMTP。sendmail:需配置/etc/mail.rc,适合复杂邮件头设置。cron用户访问,必要时使用chmod调整权限。cron默认环境与终端不同,建议在脚本中指定绝对路径或通过export设置变量。通过以上步骤,可快速实现Ubuntu系统的定时邮件发送功能,适用于系统监控、日志告警等场景。