1 Naposledy upravil: cece (2011-07-01 14:47:44)

Téma: Odeslání více e-mailů v případě alarmu

Lze nějak odeslat více e-mailu na různé adresy v případě alarmního stavu?
V příkladech hlídání teploty máte odeslání na 1 e-mail a to funguje dobře, ale pokud stejným způsobem zkusím poslat e-mail na další adresu tak se to nepovede správně a SMTP hodí error.  Asi je treba počkat nějakou definovanou dobu po 1. odeslání e-mailu.  Nastavil jsem tam čekání wait(10000); a s tím to projde. Aby se nezdržoval program nejde zřídit systémovou proměnou značící připravenost na odeslání dalšího mailu nebo úspěšné odeslání předešlé zprávy?

2

Re: Odeslání více e-mailů v případě alarmu

Ano, současně lze odeslat jen jeden email, pokud se pokusíte poslat více emailů najednou, budou všechny další pokusy zamítnuty, dokud se nepovede plně dokončit ten první (tzn. celá transakce s SMTP serverem).
Řešením je sledovat sys[65] a zařídit se podle hodnoty této proměnné. Např. jakmile se tam objeví hodnota 256 tak víte, že email by právě úspěšně odeslán. Nebo jiná hodnota, a pak víte, že se stala chyba a nic se neposlalo, a pak se to např. můžete pokusit opakovat atd.

http://wiki.merenienergie.cz/index.php/OSI7_status_code

Když zavoláte funkci pro odeslání emailu, tak se v ten okamžik sys[65] nastaví na nulu. Jakmile je email odeslán, nebo vznikne chyba, nastaví se sys[65] na konkrétní nenulovou hodnotu a tak to zůstane, až do nejbližšího dalšího zavolání funkce pro odesílání emailu (nebo jiné OSI7 funkce).

Takže jediný správný způsob odesílání emailu je následné sledování sys[65], a až po obdržení vhodné hodnoty posílat další. Čekání, např. wait s 10 sec časem, je nevhodné - jak jste sám napsal, ale nejen pro zdržení, někdy totiž SMTP server může chtít i déle než deset sec... ale nejčastěji je to do 1 sec odesláno.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: Odeslání více e-mailů v případě alarmu

Tak sys[65] jsem nějak přehlédl. Díky za osvětlení tohoto problému. Doufám, že vaše rady dobře poslouží i dalším, kteří se s ním budou potýkat.