温馨提示×

ubuntu定时发送邮件技巧

小樊
42
2025-08-31 13:06:21
栏目: 智能运维

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

1. 安装邮件工具

选择一种邮件工具并安装:

  • mailx(系统自带,简单易用):
    sudo apt install mailutils # 安装mailutils(包含mailx)  
  • ssmtp(轻量级,需配置SMTP):
    sudo apt install ssmtp mpack # mpack用于发送附件  

2. 配置邮件工具

  • mailx:通常无需额外配置,直接使用mail -s "主题" recipient@example.com < body.txt发送。
  • ssmtp:需编辑配置文件/etc/ssmtp/ssmtp.conf,填入SMTP服务器信息(如Gmail):
    root=postmaster mailhub=smtp.gmail.com:587 AuthUser=your_email@gmail.com AuthPass=your_app_password # 使用应用专用密码  UseSTARTTLS=YES 

3. 编写邮件发送脚本

创建一个Shell脚本(如send_email.sh),内容示例:

#!/bin/bash  # 邮件内容  SUBJECT="定时邮件测试" BODY="这是通过Ubuntu定时发送的邮件内容,当前时间:$(date)" RECIPIENT="recipient@example.com" # 使用mailx发送  echo "$BODY" | mail -s "$SUBJECT" "$RECIPIENT" # 若需发送附件,使用ssmtp+mpack(需先安装)  # echo "邮件正文" | mpack -s "$SUBJECT" -a "附件路径" "$RECIPIENT"  

注意:脚本需赋予可执行权限:

chmod +x send_email.sh 

4. 通过crontab设置定时任务

  • 编辑当前用户的crontab:
    crontab -e 
  • 添加定时规则(格式:分 时 日 月 周 命令):
    # 每天上午10点发送邮件  0 10 * * * /path/to/send_email.sh # 每5分钟测试一次(调试用)  */5 * * * * /path/to/send_email.sh 
  • 保存后重启cron服务(部分系统无需重启):
    sudo service cron restart 

5. 验证与调试

  • 查看cron日志(确认任务是否执行):
    sudo tail -f /var/log/syslog | grep cron 
  • 手动运行脚本测试邮件是否正常发送。

关键注意事项

  • SMTP配置:若使用Gmail等第三方邮箱,需启用“应用专用密码”或关闭“不够安全的应用”限制。
  • 路径问题:脚本中涉及文件路径时,建议使用绝对路径(如/home/user/script.sh)。
  • 权限管理:确保脚本和配置文件权限正确(如chmod 700防止未授权访问)。

以上步骤参考自,可根据实际需求选择邮件工具和配置方式。

0