温馨提示×

ubuntu定时发送邮件的技巧

小樊
64
2025-09-06 13:21:21
栏目: 智能运维

在Ubuntu上定时发送邮件可通过以下步骤实现,核心工具为cron定时任务和邮件发送工具(如mailssmtp等):

1. 安装基础工具

  • 安装邮件工具
    sudo apt update  
    sudo apt install mailutils ssmtp  # mailutils包含mail命令,ssmtp用于SMTP转发  
    
  • 配置SMTP
    编辑/etc/ssmtp/ssmtp.conf,填入SMTP服务器信息(如Gmail):
    mailhub=smtp.gmail.com:587  
    AuthUser=your_email@gmail.com  
    AuthPass=your_app_password  # 建议使用应用专用密码  
    UseSTARTTLS=YES  
    

    注意:Gmail需启用“允许不够安全的应用”或使用应用专用密码。

2. 编写邮件发送脚本

  • 简单文本邮件
    创建脚本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  
    

3. 设置定时任务

  • 使用crontab编辑定时规则
    crontab -e  
    
    添加规则(如每天上午10点发送):
    0 10 * * * /path/to/send_email.sh >> /path/to/email.log 2>&1  
    

    说明>>将输出追加到日志文件,方便调试。

4. 高级技巧

  • 动态内容生成
    在脚本中调用系统命令生成邮件内容,例如磁盘监控:

    #!/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,适合复杂邮件头设置。

5. 注意事项

  • 权限问题:确保脚本和配置文件可被cron用户访问,必要时使用chmod调整权限。
  • 环境变量cron默认环境与终端不同,建议在脚本中指定绝对路径或通过export设置变量。
  • 测试验证:先手动运行脚本确认邮件能正常发送,再添加到定时任务。

通过以上步骤,可快速实现Ubuntu系统的定时邮件发送功能,适用于系统监控、日志告警等场景。

0