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