使用电子邮件设置简单的自动化系统

使用电子邮件设置简单的自动化系统

事实证明,尝试建立一个简单的自动化系统对我来说极其复杂。使用脚本,我想使用电子邮件来执行远程任务。剧本大纲:

  1. 发送一封空正文电子邮件,标题为“Pattern1(数字)”
  2. 阅读最近 50 个电子邮件标题。
  3. 查找与“Pattern2(数字)”匹配的最新标头。
  4. 将该标头中的数字保存(回显)到文件中。
  5. 等5分钟
  6. 循环到1。

我正在尝试使用尽可能少的程序。目前,使用 Mutt 来发送和检索电子邮件。和 grepmail(带有 grep 脚本)用于搜索电子邮件。

我离使用 Mutt 和 grepmail 还差得远吗?作为一个非系统管理员,我很困惑。 Mutt 不太适合编写脚本。设置这个的最简单方法是什么?

答案1

这一切都可以通过只完成curl

发电子邮件

MSG="From: [email protected]
To: Receiver
Subject: Test"

echo "$MSG" | curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd \
--mail-from "[email protected]" --mail-rcpt "[email protected]" \
--upload-file - --user "[email protected]:password" --insecure

要阅读邮件,首先您必须知道收件箱中有多少封电子邮件。

EXISTS="$(curl --insecure \
--user "[email protected]:password" \
--url 'imaps://imap.gmail.com:993/' \
--request "EXAMINE INBOX" | grep "EXISTS" | grep -oP '\d*' | head -n1 )"

echo "$EXISTS"

最新的电子邮件的编号最高。打印最近 5 封电子邮件的主题,最新的在前。

for ((i=$EXISTS;i!=$EXISTS-5;i--)); do
   SUBJECT="$(curl --insecure -u "[email protected]:password" \
   --url "imaps://imap.gmail.com:993/INBOX;UID=$i" | \
   grep "Subject: " | head -n1 )"

   echo "$SUBJECT"
done

注意:要启用这样的 smtp/imap 访问,您必须进入 Gmail 设置禁用安全设置。

相关内容