1

Téma: odeslání emailu

Nevím kde dělám chybu, snímám napětí a na základě změny chci oseslat email. Pokud má email pouze předmět, tak odejde v pořádku jedenkrát, ale při dalších parametrech mi přijdou dva rozdílné emaily. Konkrétně to vypadá takto:

 smtp_send(xx@xx.cz', 'zvonek', 'v' sys[8] 'hodin' ' ' sys[9] 'minut' ' dne :'sys[5]' .' sys[6] '. 'sys[7] ' byl sepnut zvonek ' );

a do schránky přijdou dva emaily s předmětem zvonek, liší se ale dalším textem, v prvním je :
GET /data.php?devid=00780002D&T0imp1=14406&T1imp1=0
což je adresa na portálu kam ukládám naměřené hodnoty a teprve v druhém emailu je to co tam chci mít:
v23hodin 10minut dne :11 .7. 2011 byl sepnut zvonek

v programování jsem silný amatér a tak děkuji za každou radu

2

Re: odeslání emailu

Podle toho kousku co jste poslal to vypadá, že máte špatně zapsány parametry ve funkci smtp_send.

smtp_send('xx@xx.cz', 'zvonek', 'v', sys[8], 'hodin' , sys[9], 'minut dne :',sys[5],' .', sys[6], '. ',sys[7], ' byl sepnut zvonek ' );

Všimněte si kde a jak jsou čárky atd.

Pozn. hlídáte dokončení odeslání emailu pomocí sys[65] než začnete odesílat ten druhý?

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í emailu

Špatný zápis parametrů mne taky napadl, zkoušel jsem různé kombinace, ale bylo to pořád stejné. Včera jsem překopíroval tento příkaz ze vzorového programu a zase přišly dva emaily.
Odeslání emailu přes sys 65 zatím nehlídám, myslel jsem si, že by to mělo význam v případě, že by byl divný až ten druhý email (když už se teda smířím s tím, že jdou dva emaily), ale on přijde nejdříve ten s GET... a teprve pak ten druhý kde už je to vše jak má být.
Jak to píšu tak mne napadlo zkontrolovat sys 65 před odesláním emailu - večer to zkusím.

4

Re: odeslání emailu

sys[65] by se mělo hlídat pokud se má odesílat více emailů za sebou.

Ale problém může být (a zřejmě i bude) v tom, že asi příliš brzo po zavolání http_get() voláte odeslání emailu pomocí smtp_send(). Nejprve je potřeba počkat, až http_get() dodělá svou práci (opět pomocí sys[65], viz ukázkový příklad na WiKi. Tyto funkce totiž sdílejí datový prostor, kde je text, jak je ostatně vidět u toho co vám přijde na mail.

Čekání na dokončení se provede jako jednoduchá smyčka, příkladem:

 http_get() nebo smtp_send();
cekej_1:
 if (sys[65] == 0) goto cekej_1:

V příkladu: dokud je sys[65] nula, tj. dokud se provádí funkce, neustále to cykluje (skáče na návěstí cekej_1).

Bližší info viz také http://wiki.merenienergie.cz/index.php/OSI7_status_code .

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

5

Re: odeslání emailu

Tak jsem našel chybičku: měl jsem z nepochopitelných důvodů 2x za sebou nakopírovaný příkaz http_get a ten druhý již neměl ošetřenu kontrolu nuly v registru 65. Navíc jsem ještě ošetřil kontrolu nuly jak před tak, po odeslání emailu a už to funguje jak má.

6

Re: odeslání emailu

Pořídil jsem si druhé Light2 a od včerejška nemohu rozchodit odeslani emailu. V zoufalství jsem do něj nahrál ten samý program, který mám v prvním a vyvolal odeslání emailu. K mému překvapení došla pouze SMSka, kterou posílám příkazem smt_send přes bránu eurotelu, ale email, který posílám před tím nepřišel. Ihned jsem vyzkoušel funkci prvního zařízení a to se chová stejně - projde pouze email ve tvaru číslo@sms.eurotel.cz. Vše je ošetřeno hlídáním registru 65 a určitě ještě před několika týdny emaily normálně odcházely. V novém zařízení mám nejaktuálnější firmare, v prvním zařízení bude starší verze, se kterou to bylo odladěno.

7

Re: odeslání emailu

Určitě zkontrolovat zda zařízení nemají stejné (od výroby) MAC adresy. Je to první položka v administraci.

8

Re: odeslání emailu

j@m napsal:

Určitě zkontrolovat zda zařízení nemají stejné (od výroby) MAC adresy. Je to první položka v administraci.



Odesílám email pomocí smtp_send('emailovaadresa@seznam.cz','Run system', 'Run System');

MAC mám u každého SDS-u samozřejmě jinou..

L.

9

Re: odeslání emailu

Zkontroluji to a případně se vydá nový opravený firmware.

Zkontrolovali jste nastavení SMTP serveru (na webu v administraci zařízení sds) ?
Je také možné že použitý SMTP server má výpadek, nebo nereaguje na TCP portu 25...

Nesnažíte se odeslat zprávu, jejíž délka (textu zprávy) má více než 1024 znaků ?

Co je vypsáno na stránce "historie" (log) ve webovém rozhraní zařízení SDS (úplně na konci - Historie OSI7) ?

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

10

Re: odeslání emailu

Mac adresy jsou rozdílné, ale je možné že u prvního zařízení "přestal" odcházet email na emai od doby kdy jsem připojil druhé zařízení.
Jdu odpojit druhé zařízení a zkusit ¨vyvolat poslani emailu na prvním zařízení...
tak to nepomohlo, přišla pouze sms, ale email ne.
V historii je OK:
21:29:48 22.03.2012  194.228.2.82, SMTP ODESLÁNO OK
21:29:49 22.03.2012  194.228.2.82, SMTP ODESLÁNO OK

v programu to mám takto:

test65
{
 label cekam_na_65:
 if (sys[65] == 0) goto cekam_na_65;
return;
}

 posli_email_zvonek
{
if (blokace_emailu_zvonku == 1) goto ven;

test65;
 smtp_send('xxx@ixxxcz', 'zvonek', 'v ' sys[8] ' hodin ' ' ' sys[9] ' minut ' ' dne :'sys[5]' .' sys[6] '. 'sys[7] ' byl sepnut zvonek ' ' - teplota venku je: '  teplota100  ' °C');

test65;
 if (sys[140] <= 1) goto mobil_firemni;
test65;
smtp_send('0042011111@sms.eurotel.cz', 'zvonek', 've ' sys[8] ' : ' ' ' sys[9] ' hod ' ' dne :'sys[5]' .' sys[6] '. 'sys[7] );
test65;
wait ;
goto skok_mobil1;
label mobil_firemni:
test65;
smtp_send('0042022222@sms.eurotel.cz', 'zvonek', 've ' sys[8] ' : ' ' ' sys[9] ' hod ' ' dne :'sys[5]' .' sys[6] '. 'sys[7] );
test65;
wait ;
label skok_mobil1:
test65;
blokace_emailu_zvonku = 1; 
  
label ven:
return;
}

v realnem programu jsou uvedeny správná tel čísla a adresy.

ze druhého zařízení se snažím posílat pouze email na email, status je také OK, ele email nepřijde. Když jsem tam nahrál program z prvního, který posílá jak SMS tak email, tak přišla pouze SMS.

11

Re: odeslání emailu

Všechny volání funkcí, jako je :

krevla napsal:

test65;

Tohle má být správně (doplnit všude ty závorky):

test65();

Dále

krevla napsal:

smtp_send('xxx@ixxxcz', 'zvonek', 'v ' sys[8] ' hodin ' ' ' sys[9] ' minut ' ' dne :'sys[5]' .' sys[6] '. 'sys[7] ' byl sepnut zvonek ' ' - teplota venku je: '  teplota100  ' °C');

Tohle se zřejmě neprovede protože tam nejsou čárky, tj.

 smtp_send('xxx@ixxxcz', 'zvonek', 'v ', sys[8], ' hodin ' , sys[9] , ' minut  dne :',sys[5],' .', sys[6], '. ',sys[7] ,' byl sepnut zvonek - teplota venku je: ',  teplota100 , ' °C');

Příkaz return není potřeba dávat na konec funkce (jako poslední příkaz), funkce se ukončí na konci sama o sobě i bez toho. Pouze pokud chcete přerušit činnost funkce dříve než dojde na svůj konec, pak se return používá.

Jak dlouho čeká to wait a provede se vůbec ? Mezi odesíláním emailů je dobré dat určitou časovou mezeru.

Máte správně (v původním programu) napsanou tu adresu ? xxx@ixxx.cz (nechybí tam ta tečka?)

Používáte pro překlad SDSC.exe z 23.02.2012 ?

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

12

Re: odeslání emailu

tak pořád se mi nedaří:
1.opravil jsem volání fce se závorkama
2. překopíroval jsem váš format zprávy s čárkama
3.příkaz wait jsem používal při ladění programu ale později jsem zjistil, že to chodí i bez něj, ale nechal jsem ho tam bez udání času, po který se má provádět
4.adresu mám napsanou správně s tečkou
5. překladač jsem používal starší, stáhnul jsem nový, ale ani ten nepomohl.

po provedení výše uvedených kroků, jsem udělal tento pokus : v programu kde se posílá jen jeden email jsem ponechal vše stejné, pouze emailovou adresu neco@neco.cz jsem nahradil za '00420111111111@sms.eurotel.cz', kde místo jedniček je správné číslo. Okamžitě po splnění podmínek mi přišla sms. znova přepisuji adresu na neco@neco.cz - adresu píšu znova, abyych snad nekopíroval nějakou chybu a nic. Email jinak v pohodě funguje. Už jsem zkoušel i poslat sam sobě podobný mail, aby to nechytal nějaký antispam, zkoušel jsem i jiný email a nic.
Asi nebudu několik dní doma, takže se odmlčím, ale pak se k tomu zase vrátím

13

Re: odeslání emailu

Zkuste nový firmware pro SDS MICRO, ze dne 27.3.2012.
Funkce smtp_send() je tam předělaná aby lépe zvládala rychlé volání za sebou, doufám že to pomůže.

Pozn. Když zavoláte wait() bez parametru, tak to čeká jen 1 msec, to je v tomto konkrétním případě určitě málo.

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

14

Re: odeslání emailu

adamn napsal:

Zkuste nový firmware pro SDS MICRO, ze dne 27.3.2012.
Funkce smtp_send() je tam předělaná aby lépe zvládala rychlé volání za sebou, doufám že to pomůže.

Pozn. Když zavoláte wait() bez parametru, tak to čeká jen 1 msec, to je v tomto konkrétním případě určitě málo.

Zkusil jsem a pořád nic. V tomto programu posílám jen jeden email, takže tam nemám žádný wait.

Znova jsem tedy napsal příkaz :

test65();

smtp_send('602111111@sms.eurotel.cz', 'pokus',  'test' );
test65();
jen místo jedniček je správné číslo - do 8 vteřin mi přišla sms

pak jsem přepsal příkaz na
test65();

smtp_send('kkkkk@iiiii.cz', 'pokus',  'test' );
test65();

kde místo kkkkk a iiiii je správná adresa a email nepřišel,
znova jsem zkoušel i jiný email a taky nic

nerozumím tomu smtp_send na mobil projde a na email ne . Formálně je rozdíl v adrese ten, že mobilní sms má za zavináčem v adrese 2 tečky
posílám to přes dns 194.228.8.82:

Čas Událost
20:47:41 30.03.2012  194.228.2.82, SMTP ODESLÁNO OK
20:57:30 30.03.2012  194.228.2.82, SMTP ODESLÁNO OK
20:59:27 30.03.2012  194.228.2.82, SMTP ODESLÁNO OK
21:00:58 30.03.2012  194.228.2.82, SMTP ODESLÁNO OK
21:14:27 30.03.2012  194.228.2.82, SMTP ODESLÁNO OK
21:16:27 30.03.2012  194.228.2.82, SMTP ODESLÁNO OK
21:27:56 30.03.2012  194.228.2.82, SMTP ODESLÁNO OK
21:32:09 30.03.2012  194.228.2.82, SMTP ODESLÁNO OK

15 Naposledy upravil: qidorv (2012-03-31 06:19:42)

Re: odeslání emailu

Mate v administraci mikra nastaveno existujici domenove jmeno? Ono totiz nektere servery po ceste toho emailu, toto kontroluji a emaily z neexistujici domeny zahodi. Uz jsem se s tim parkrat setkal.

16

Re: odeslání emailu

Zkuste založit si email na email.seznam.cz, je to zadarmo. Emaily z SDS se pak budou posílat z této adresy (přes tuto schránku).

Adresa konkrétního SMTP serveru lze pak zjistit z nápovědy Seznamu, nebo pomocí ">ping smtp.seznam.cz".

Pak stačí správně vyplnit nastavení v administraci a vyzkoušet to.

Všechny moje testy s tímto smtp serverem jsou plně úspěšné.

-

Komu patří 194.228.2.82 a jaké vyžaduje nastavení, to nevím, to musí sdělit majitel tohoto smtp serveru.

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

17

Re: odeslání emailu

Nektere SMTP kontroluji domenove jmeno v hlavice emailu ( takovy jednoduchy antispam ), a pokud zvolim v v administraci SDS OSI7 - SMTP - adresa odesilatele: mikro1@neexistujici_domena.cz, tak mam velkou sanci ze email bude cestou zahozen.

Takze pokud zadam v administraci adresu odesilatele : mikro1@merenienergie.cz, tak by to melo byt OK. Protoze tato domena je platna.

Reseni se zalozenim schranky na freemailu a odesilani pres smtp toho freemailu muze byt pro nekoho problematicke, protoze nekteri ISP blokuji SMTP pripojeni na cizi servery a nuti uzivatele odesital postu pres jejich SMTP server, nebo pouzivat webmail.

194.228.2.82 bude nejspise od O2, takze prima cesta na odesilani SMS eurotelu, bez dalsich cizich smtp serveru v ceste.

S timto problemem jsem bojoval pred lety u DVR Pinetron, kde se nedalo domenove jmeno zmenit a opet pred mesicem u SDS micro, kde jsem udelal preklep v emailove adrese odesilatele a emaily nedorazily i kdyz byly odeslany.

18

Re: odeslání emailu

server 194.228.2.82 je eurotel. Zkusil jsem změnit adresu odesilatele v administraci, ale ani to nepomohlo.
Vysledoval jsem, že z prvního zařízení mi přestaly odcházet emaily po 12.březnu 2012. Před tím při stejné konfiguraci chodily několik měsíců. Přibližně v tuto dobu jsem  chtěl začít posílat emaily ze druhého zařízení. Zkusil jsem včera vypnout druhé zařízení, vyresetoval jsem jak router, tak i první zařízení, ale vše zústalo při starém = odcházejí pouze emaily ve tvaru sms.
Adresu na seznamu jsem nezkoušel, pořád si myslím, že problém bude někde jinde - když to po několika měsících přestalo chodit....
Zkusil jsem ještě použít smtp server od gmailu, ale tam jsem měl něco špatně, protože mi to nenapsalo, že byl emaiůl odeslát, ale psalo mi to chybu smtp 1. Je někde přehled co znamenají jednotlivá chybová hlášení?

19

Re: odeslání emailu

1 = timeout (vypršel dovolený čekací čas při odesílání)
viz WIKI

SDS micro DIN - firmware 8.7.2014, SDS micro DIN - firmware Beta xx.x.2014
SDS nováček :-) Správce sítě, programátor, kutil .... :-)

20

Re: odeslání emailu

Díky LeosL jsem znova rozchodil odesílání emailů a to změnou smtp servru na seznam.cz. Přes O2 smtp server odcházely od poloviny března pouze emaily, které byly psány jako SMS, klasický email neodešel. Přes seznam chodí vše v pohodě.
Ještě jednou děkuju za pomoc.

21

Re: odeslání emailu

Vrátil jsem se po letní pauze k programu, který zásadně rozšiřuji a zjistil jsem , že mám pěkný guláš s využitím registru sys 65 . Měl jsem zakázaný test registru 65 po odeslání emailu, jakmile jsem jej povolil, tak  mi program uvíznul v čekací smyčce na na nulu v registru 65 po odeslání emailu. Podíval jsem se na Wiki a zjistil jsem,že zde stav nula není uveden a tak jsem jej nahradil testem na 270 = právě probíhá odesílání emailu a vše začalo fungovat. Včera mi však neodešel email kvůli překročení timeoutu (chyba 1 v logu) a tak jsem začal přemýšlet jak zajistit opakované odeslání a znova jsem se podíval na WIKI abyh zjistil, že správné odeslání má stav 256 a pak je zde celá řada hodnot definujících nezdařené nebo i zdařené  odeslání. Potud je mi vše jasné, ale není zde nikde uvedena hodnota 0. Na mém druhém sds testuji registr 65 na nulu a odesílání mi funguje. Problém je ale v tom, že toto zařízení mám v provozu delší dobu a program na něm neupravuji a proto ani neaktualizuji fw. Chci se tímto dlouhým úvodem zeptat jestli v minulých měsících došlo k nějaké změně ve vyhodnocování registru sys 65? A jestli když upravím program z sds a přeložím jej pomocí nejnovější verze překladača AND bez přehrání aktuálního fw bude program fungovat s testem registru sys 65 na nulu po odeslání emailu??

Možná jsem to napsal hodně obsáhle, zkusím to shrnout do jedné otázky : testovat po odeslání emailu hodnotu sys 65 na nulu nebo na jinou hodnotu?
 


TiborTeam napsal:

1 = timeout (vypršel dovolený čekací čas při odesílání)
viz WIKI

22

Re: odeslání emailu

krevla napsal:

testovat po odeslání emailu hodnotu sys 65 na nulu nebo na jinou hodnotu?

Testovat na výsledek - po úspěšném odeslání tam má být 256, v případě chyby jiné číslo (257 až 273 ...).

Před zavoláním funkce může mít sys[65] prakticky jakoukoliv hodnotu (mohla být předtím zavolána jiná OSI7 funkce).
V okamžiku zavolání funkce se sys[65] nastaví na nulu. Následně (buď po dokončení činnosti - odesílání - což může trvat déle, nebo naopak při chybě dojde k nastavení prakticky ihned) se nastaví sys[65] na výslednou hodnotu.

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

23

Re: odeslání emailu

Občas přemýšlím nad tím jak odeslat sms na tel. číslo, které zadam pouze do registrů.
Níže uvedený kousek programu se mi po spuštění v simulátoru chová tak. že vypíše že došlo k odeslání emailu na adrsu, kterou jsem před tím  vytvořil do pole TEXT. Když to ale zkouším ve skutečném zařízení, tak nedojde ani k pokusu o odeslaní emailu.

24

Re: odeslání emailu

Jakou verzi programu máte v SDS, ve které to nefunguje ?
Každopádně to nechám prověřit, a pokud to skutečně nefunguje, tak to hned nechám opravit a vydá se nová verze.

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

25

Re: odeslání emailu

adamn napsal:

Jakou verzi programu máte v SDS, ve které to nefunguje ?
Každopádně to nechám prověřit, a pokud to skutečně nefunguje, tak to hned nechám opravit a vydá se nová verze.

Někdy z prosince nebo ledna. V sobotu jsem nahrál tu nejnovější (únorovou) verzi do jednoho zařízení a v nejbližších dnech se snad dostanu k  nahrání  i do druhého, ve kterém jsem to zkoušel.