Portál AbcLinuxu, 12. května 2025 21:49

Dotaz: Bash: jak poslat email?

17.1.2005 11:15 Martin
Bash: jak poslat email?
Přečteno: 2196×
Odpovědět | Admin
Zdravim, potreboval bych poslat email v bash skriptu, zkousim to pomoci telnet a chat. Kdyz se na smtp server prihlasim interaktivne, vsechno funguje, ale kdyz telnet spustim tak, aby cetl a zapisoval do roury, tak probehne jen prihlaseni (na HELO xxxx server spravne odpovi) a chybne prikazy (server odpovi chybovou hlaskou), ale na jakykoliv validni prikaz uz odpoved neprijde. Zkousim to takto:
mkfifo fifo1
mkfifo fofo2
telnet smtp.xxxx.xx < fifo1 | cat > fifo2
a v dalsich terminalech pustim toto:
cat fifo2
cat > fifo1
Nevite, cim to je, nebo jak odesilani mailu napsat jinak (ne perl, PHP,...)
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.1.2005 11:23 Zdeněk Burda | skóre: 61 | blog: Zdendův blog | Praha
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
Odpovědět | | Sbalit | Link | Blokovat | Admin
echo zprava | mail komu@email.cz -s "subject zpravy"
-- Nezdar není hanbou, hanbou je strach z pokusu.
17.1.2005 11:25 Martin
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
To ale funguje jen v pripade, ze na tom samem pocitaci bezi smtp server. Nebo se mylim a lze nejak programu mail smtp server zadat?
17.1.2005 11:41 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
To mas asi pravdu.

Ale napr. mutt to isto zvladne. A vlastne asi vacsina inteligetnejsich mailovacich programov.

17.1.2005 12:09 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tahle metoda vede typicky k SMTP synchronization error, protože posíláš data dřív, než ti SMTP server odpoví na HELO. Nejspíš bude fungovat exec 3<>/tcp/server/25, a pak posílat data do 3 a číst z něj pěkně po řádcích. Příjemnou zábavu. BTW nechápu, co ti vadí na použití programu jménem perl nebo python, když by ti nevadilo použití programu jménem mail -- stejně už by to nebylo ,čistě v bashi`. V perlu to napíšeš jako one-liner, který bude desetkrát kratší než cokoli v shelu...
17.1.2005 13:18 Martin
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
Proc by to melo zpusobovat SMTP synchronization error? V pripade, ktery jsem popsal v otazce, zajistim synchronizaci rucne, tj. kdyz mi prijde odpoved serveru tak mu zas neco poslu ( na to ty dve roury). Az bude toto fungovat, chci misto sebe pouzit program chat. Nejspis se na to ale vykaslu a pouziju mutt, jestli mu lze ovsem vnutit adresu smtp serveru.
17.1.2005 14:10 Martin Čížek | skóre: 20 | Praha
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
exec 3<>/dev/tcp/server/25
Kdyby dva z nás byli dvěma z nich, všichni z nás by mohli být všemi z nich.
17.1.2005 12:12 maleprase | skóre: 28
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
Odpovědět | | Sbalit | Link | Blokovat | Admin
doporucuji pouzit netcat - nc

1. terminal
$ cat send_mail
EHLO localhost
MAIL FROM: test@localhost
RCPT TO: bach@localhost
DATA
Subject: test

test
.
$ cat send_mail > fifo1
2. terminal
$ nc 127.0.0.1 25 < fifo1 | cat > fifo2
3. terminal
$ cat fifo2
220 localhost ESMTP Sendmail 8.12.11/8.12.11; Mon, 17 Jan 2005 12:10:50 +0100
250 2.1.0 test@localhost... Sender ok
250 2.1.5 bach@localhost... Recipient ok
354 Enter mail, end with "." on a line by itself
250 2.0.0 j0HBAo1P027660 Message accepted for delivery
17.1.2005 12:23 maleprase | skóre: 28
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
tak ten jeden cat je tam jaksi navic ;)
17.1.2005 12:54 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
A způsobí to úplně stejný SMTP synchronization error. Proč by taky nemělo. (Nehledě na to, že to zcela zbytečně používá FIFO, nc a tři terminály.)
17.1.2005 13:25 Martin
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
Dik, ted nejsem na linuxu, vecer vyzkousim.
8.3.2005 21:52 trancelis
Rozbalit Rozbalit vše Re: Bash: jak poslat email?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tohle sem dělal ... SMTP vyžaduje, aby byly konce řádků CR LF a né jen LF ... tedy
echo -e "helo xxxx\r\nmail from ... "

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.