使用 systemd 定期发送电子邮件

使用 systemd 定期发送电子邮件

我想用系统定时器定期发送电子邮件提醒我某些事情,例如周年纪念日或报税。

我定期发送电子邮件穆特;如果我可以重复使用它来发送自动电子邮件,而不必安装其他软件(例如发送邮件

我使用的是 Arch Linux 4.18.5,systemctl --versionsystemd 239 说。

答案1

~/.config/systemd/user/send-mail.service首先,创建一个包含以下内容的systemd 服务文件:

[Unit]
Description=Sends mail that reminds me of an anniversary

[Service]
; The l flag for bash creates a login shell so Mutt can access our environment variables which contain configuration
ExecStart=/bin/bash -lc "echo \"$(whoami) created this message on $(date) to remind you about...\" | mutt -s \"Don't forget...\" [email protected]"

您可以通过执行来测试发送邮件是否有效

systemctl --user daemon-reload && systemctl --user start send-mail.service

这应该发送一封电子邮件至[email protected]

~/.config/systemd/user/send-mail.timer然后,使用以下内容创建一个计时器:

[Unit]
Description=Timer for writing mail to myself to remind me of anniversaries

[Timer]
; Trigger the service yearly on September 5th
OnCalendar=*-09-05
; Send a mail immediately when the date has passed while the machine was shut down
Persistent=true
AccuracySec=1us
; Set the timer to every ten seconds (for testing)
; OnCalendar=*:*:0/10

[Install]
WantedBy=timers.target

请注意,计时器的内容不引用服务。它仍然有效,因为服务和计时器除了后缀.service和 之外 具有相同的名称.timer。如果您想以不同的方式命名计时器和服务,请Unit=在计时器[Timer]部分使用。

让你的计时器在启动时启动

systemctl --user daemon-reload && systemctl --user enable send-mail.timer

您现在应该能够看到计时器了systemctl --user list-timers --all

要启动计时器,请执行以下操作

systemctl --user start send-mail.timer

要检查 systemd 如何解释您的日期,您可以使用systemd-analyze calendar *:0/2systemd-analyze calendar quarterly。另外,请查看手动的关于systemd的时间格式。

相关内容