在上一篇文章的基础上,要求 cron 作业通过单个命令行发送状态消息,如下所示:
问题是如何使用一行来发送附件文件。
设想:
cron 作业生成输出文件,如下所示:
cd /home/pi/python
gnuplot plt12
程序文件plt12包含以下两行:
set output "pl12.png"
set terminal png font "arial,11"
这是在 Rpi3B 系统上完成的,该系统通过 USB 连接到 Nano,用于进行数据记录的 ADC。
所以,问题是,使用单个命令行通过 gmail 发送绘图文件图像的最简单方法是什么?
答案1
和mutt
:
SMTP_URL='smtps://user:[email protected]' mutt \
-F /dev/null \
-e 'set from="Me <[email protected]>"' \
-e 'set smtp_url=$SMTP_URL' \
-s 'pl12.png file' \
-a pl12.png -- \
[email protected] << EOM
Hi,
see pl12.png attached.
--
Me
EOM
与每个 shell 代码一样,如果您愿意,您可以随时将其放在一行中,但这对可读性没有帮助:
printf 'Hi,\n\nsee pl12.png attached\n\n-- \nMe\n' | SMTP_URL='smtps://user:[email protected]' mutt -F /dev/null -e 'set from="Me <[email protected]>"' -e 'set smtp_url=$SMTP_URL' -s 'pl12.png file' -a pl12.png -- [email protected]
答案2
根据OP中引用的上一个问题,使用单个命令行发送消息的最简单方法如下所示:
摘抄:
ssmtp
使用以下命令安装:
sudo apt-get update
sudo apt-get install ssmtp
然后进入 /etc/ssmtp 并编辑 ssmtp.conf 如下所示:
root=rpi3abc@gmail
mailhub=smtp.gmail.com:465
FromLineOverride=YES
[email protected]
AuthPass=testing123
UseTLS=YES
发送这样一行行:
echo "Testing...1...2...3" | ssmtp [email protected]
一旦该部分完成,那么用一行发送附件同样简单。
首先,安装mpack
:
sudo apt-get update
sudo apt-get install mpack
然后,按照将文件 pl12.png 发送给用户的场景[电子邮件受保护],它是通过以下单个命令行完成的:
mpack -s "12-Volt Battery Pack plot" /home/pi/python/pl12.png [email protected]
如果文件位于当前目录中,则无需使用完全限定路径。
cron
作业始终在用户的主目录中运行,因此使用附件文件的完整目录路径始终是一个好习惯。