使用 gmail 从命令行发送带有图像附件的邮件的最简单方法?

SDs*_*lar 5 email ssmtp gmail

建立在上一篇文章的基础上,其中要求让 cron 作业通过单个命令行发送状态消息,如下所示:

使用 gmail 通过命令行发送单行邮件的最简单方法?

关于如何使用单行发送附件文件的问题出现了。

设想:

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 发送该绘图文件图像的最简单方法是什么?

SDs*_*lar 6

基于 OP 中引用的上一个问题,使用单个命令行发送消息的最简单方法是这样完成的:

使用 gmail 通过命令行发送单行邮件的最简单方法?


摘抄:

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 作业始终在用户的主目录中运行,因此使用附件文件的完整目录路径始终是一个好习惯。



Sté*_*las 6

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)