事实证明,尝试建立一个简单的自动化系统对我来说极其复杂。使用脚本,我想使用电子邮件来执行远程任务。剧本大纲:
- 发送一封空正文电子邮件,标题为“Pattern1(数字)”
- 阅读最近 50 个电子邮件标题。
- 查找与“Pattern2(数字)”匹配的最新标头。
- 将该标头中的数字保存(回显)到文件中。
- 等5分钟
- 循环到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 设置禁用安全设置。