Odeslání e-mailu z terminálu Raspberry Pi

Programujete na Raspberry Pi a hodila by se vám nějaká e-mailová notifikace? Třeba v případě, že v programu dojde k nějaké chybě nebo denní report např. z metostanice.

K odeslání mailů z terminálu (příkazové řádky) použijeme SMTP klienta msmtp.

Obrázky se nestihly načíst.
Prosím opakujte akci zachvilku.
Odeslání e-mailu je pro robota hračka


Instalace msmtp

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install msmtp msmtp-mta -y


Konfigurace msmtp

Nastavení SMTP klienta se provádí v souboru /etc/msmtprc (případně v souboru ~/.msmtprc). Tento soubor po instalaci neexistuje, tak si ho vytvořte 😉.

sudo vim /etc/msmtprc


Konfigurace pro GMail

Do konfiguračního souboru /etc/msmtprc vyplníme následující nastavení

# Generics
defaults
auth on
tls on
# following is different from ssmtp:
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# user specific log location, otherwise use /var/log/msmtp.log, however,
# this will create an access violation if you are user pi, and have not changes the access rights
logfile ~/.msmtp.log

# Gmail
account gmail
host smtp.gmail.com
port 587
from whoami
user username@gmail.com
password password

# Default
account default : gmail

Pokud máte, jako já, na GMailu dvoufázovou autentizaci, tak heslo není heslo 🙂. Ale je to heslo aplikace vygenerované v rozhraní GMailu na stránce myaccount.google.com/apppasswords.

Konfigurace pro Seznam.cz

# Generics
defaults
auth on
tls on
# following is different from ssmtp:
tls_trust_file /etc/ssl/certs/ca-certificates.crt
# user specific log location, otherwise use /var/log/msmtp.log, however,
# this will create an access violation if you are user pi, and have not changes the access rights
logfile ~/.msmtp.log

# Seznam.cz specifics

account seznam
host smtp.seznam.cz
port 25
from whoami
user username@seznam.cz
password password

# Default
account default : seznam

Všechno funguje i pro Mojí doménu u seznam.cz

Odeslání e-mailu

E-mail z terminálu pošleme příkazem

echo 'testovací zpráva' | msmtp destination-email@domain.com

Tato testovací zpráva ale nejspíš skončí ve spamovém koši. Tak si buď doplňte další parametry jako třeba předmět, nebo udělejte pravidlo 😉

Pokud si chcete vybrat účet, ze kterého bude e-mail odeslán, tak použijte přepínač -a

echo 'testovací zpráva' | msmtp destination-email@domain.com -a gmail


printf 'To: destination-email@domain.com\nFrom: source-email@domain.com\nSubject: TEST\n\nPokusny email' | msmtp destination-email@domain.com


E-mail s přílohou

Pokud budeme chtít poslat e-mail s přílohou tak je nutné doinstalovat aplikace mutt

sudo apt-get install mutt -y

V domovském adresáři si vytvoříme konfigurační soubor .muttrc

vim ~/.muttrc

a do něho vyplníme konfiguraci

set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Jméno"
set from=source-email@domain.com
set envelope_from=yes

Pak už můžeme jednoduše odesílat zprávy pomocí příkazu

echo "text zprávy" | mutt -a soubor.txt -s "Předmět e-mailu" – destinantion-email@domain.com

Paráda ne? 🙂

Závěr

K čemu se hodí posílání e-mailů z příkazové řádky?

Jistě máte na Raspberry nějakou aplikaci do které by se hodila e-mailová notifikace. Třeba meteostanice nebo webové stránky 😉.

Zdroje:
Raspberry Pi forum
Posílání e-mailů s přílohou
Článek, který mě na tento návod přivedl

E-mail, SMTP, Návod

- (3. 2. 2020)

Líbil se vám článek?

Nasdílejte ho svým přátelům na sociálních sítích.

Pinterest

Názory, připomínky a jiné komentáře

Skvělý návod, dost mi to pomohlo.
Vzhledem k tomu, že ssmtp mi nefungovalo (asi kvůli změnám a postupnému odchodu od ssmtp, který se prý už dál nevyvíjí, návody které jsem zkoušel byly starší), přičemž dělat si nějaký speciální script na posílání v pythonu mi připadalo jak s kanonem na brabce.

Václav: Díky :-)

Vložit nový komentář

Jsem programátor, horolezec a tak trochu FlexiBee fanatik :-).
Na CharlieBlogu sepisuji své nápady a poznatky už od roku 2006.

Powered by CharlieBlog Engine v2.3 - Login