Java mail a logování pošty

Petr

Java mail a logování pošty
« kdy: 07. 02. 2012, 14:02:29 »
Dobrý den, mám aplikaci na generování faktur, ty se následně odesílají v dávkách  na mail zákazníků. Mám tam logování  v případě vzniku výjimky, ale potřebuji aplikaci rozšířit o možnost logovat i úspěšné odeslání emailu, jako potvrzení o odeslání.

Potřeboval bych logovat údaje jako: čas přijetí mailu na server, z jaké adresy mail obdržel, zda byl v pořádku.
Procházel jsem dokumentaci k balíčkům javax.mail.* a com.sun.mail.* které využívám, ale nic tam není použitelné, vím, že se tyto údaje logují přímo na daném SMTP serveru, ale rád bych věděl zda je možné je nějak získat skrze Javu, zda to někdo neřešil.
Předem děkuji za nápady
« Poslední změna: 08. 02. 2012, 23:52:31 od Petr Krčmář »


DarkKnight

Re:JAVA mail, logování
« Odpověď #1 kdy: 07. 02. 2012, 15:19:59 »
a mas pristup na finalni server? (tj tam, kde ten email prijde)

pokud ne, nemuzes to nijak logovat (pokud neprijde email od daemona)

Petr

Re:JAVA mail, logování
« Odpověď #2 kdy: 07. 02. 2012, 16:49:29 »
přístup na finální server nemám, proto se snažím zjistit, zda není možné po odeslání emailu zavolat nějakou metodu, která by si toto info od serveru vyžádala, zatím se mi jen potvrzuje, že to nejde
jediným řešením se zatím zdá být, získat log od zřizovatele serveru a z něj pak zpětně potřebné info dohledat a doplnit do logu

Ivan

Re:JAVA mail, logování
« Odpověď #3 kdy: 07. 02. 2012, 17:23:49 »
Ahoj, nevim jak si SMTP predstavuji Javisti, ale se SMTP se nebav. Neni to tvoje prace a ani nedostupnost SMTP serveru neni problem tvoji aplikace.

Spravny reseni - alespon na Unixu - je spustit prikaz sendmail a telo mailu mu predat. Dal uz to opravdu neni problem tvoji aplikace.
Prikaz sendmail nejspis preda mail lokalnimu SMTP serveru a ten se pak bude pokouset o doruceni tak dlouho jak bude potreba.

Tenhle pristup ma spoustu vyhod
- routovani mailu si vyresi Unix admin, ne programator
- konfigurace SMTP se provadi na jedinem miste
- vsechny logy jsou pristupne na standartnim miste /var/log/mail.log
- tvoje aplikace nebude odpovedna za pripadny re-submit, pokud je vzdaleny SMTP server nedostupny.

To ze wokna zadny podobny pristup nenabizi jeste neznamena, ze Javovy programy musi delat chaos i na Unixu.

Petr

Re:JAVA mail, logování
« Odpověď #4 kdy: 07. 02. 2012, 19:11:17 »
Ano vím co má aplikace za úkol, naprosto s tebou souhlasím, ale zákazník, pro kterého byla aplikace vyrobena si vyžádal tuto funkcionalitu, pokud je to reálné, jelikož jsem toto ještě neřešil, tak jsem chtěl vědět názory druhých, abych měl podložené, že nemám špatný úsudek na věc co neznám. Takže děkuji


DarkKnight

Re:JAVA mail, logování
« Odpověď #5 kdy: 07. 02. 2012, 20:49:27 »
Ivan: pokud jsem to spravne pochopil, tak chce neco na zpusob dorucenky u SMS -> aby se zapsalo do aplikace, nejenom, kdy byl email odeslan, ale i kdy byl dorucen (coz z principu neni bez pristupu k cilovemu serveru mozne)

Sislik

Re:JAVA mail, logování
« Odpověď #6 kdy: 07. 02. 2012, 22:42:20 »
existuje "Potvrzeni o doruceni" (neplest s "Potvrzeni o precteni"!), ten, kdo uklada zpravu do cilovy schranky posle potvrzeni, ze zprava byla ulozena do schranky, ovsem ne kazdy server toto podporuje, zobecnit se to da na to, ze potvrzeni posila posledni server v rade, ktery toto podporuje, takze treba neposle, ze zprava byla ulozena do schranky, ale ze zprava byla predana nadrazenemu serveru

pokud by Petrovo SMTP server podporoval zasilani "Potvrzeni o doruceni", tak by mel vzdy jistotu, ze mu pri nejhorsim jeho vlastni server potvrdi, ze zpravu predal dal

poznamka na zaver: nekteri postovni klienti, napr. Thunderbird, zamenuji "Potvrzeni o doruceni" za "Potvrzeni o precteni", takze se mi stava, ze ackoliv "Potvrzeni o precteni" nevyzaduje, prichazi mi potvrzeni, za ucivatel si zpravu precetl :)

Sislik

Re:JAVA mail, logování
« Odpověď #7 kdy: 07. 02. 2012, 22:44:20 »
zapomnel jsem dodat - to potvrzeni prijde jako email zpatky na adresu odesilatele

Re:JAVA mail, logování
« Odpověď #8 kdy: 08. 02. 2012, 12:22:13 »
Je to prakticky z podstaty fungovania emailu nemozne, rovno na to zabudni a zakaznikovy to vytlc z hlavy. Dokonca aj keby si parsoval logy vlastneho ( odosielacieho ) mailservru, nemas zarucene, ze to niekam doslo, pretoze naprotivny smtp server, na ktory to posles, vobec nemusi byt cielovy server a moze tam byt medzitym kludne milion dalsich serverov. Takze to proste posli a dalej sa nestaraj.

Ciste mimo zaznam, co by si mohol naimplementovat je programovo citat postu uctu, pod ktoreho identitou to odosielas a vyhladavat tam maily o nedorucitelnosti, ktore sa tam vracaju v pripade problemu. Vzhladom na to, ze si to telo ale kdejaky debil aj tak prepisuje do lokalneho jazyka, aby to pochopili sliepky na druhej strane, uspesnost parsovania bude diskutabilna.

Petr

Re:Java mail a logování pošty
« Odpověď #9 kdy: 09. 02. 2012, 10:27:23 »
nejde ani tak o to abych jistě věděl, že to adresátovi dorazilo, ale že to určitě přijal poštovní server odesilatele, to jestli už to jde dále nebo ne je věc mimo, jde tu čistě o průkaznost, že to ze systému odešlo a mít zameteno před vlastním prahem, samozřejmě jsem již podal info o možnostech řešení, takže momentálně akorát loguji přesný čas odeslání mailu z aplikace, aby bylo možné dohledávat v logu, děkuji Vám za Vaše poznatky

Ivan

Re:Java mail a logování pošty
« Odpověď #10 kdy: 09. 02. 2012, 11:37:31 »
Kdyz budes pouzivat pro odesilani lokalni sendmail(SMTP) tak to ma jeste jednu vyhodu. V logu sendmailu najdes neco jako:
- prijmul jsem od uzivatele "xy" email a davam mu hash "AB3GH".
- vyzvednul jsem z fronty mail "AB3GH" a predavam ho SMTP serveru "abc.gh.cz".

No a na servervu "abc.gh.cz" najdes v mail logu hlasku:
- prijmul jsem serveru "aplikace.gh.cz" email kterej ma hash "AB3GH".

Tim se dalsi investigace znacne zjednodusuje. Pokud muzes pro vyhledavani pouzit MSGID, tak je to mnohem jistejsi nez nejakej timestamp. Zvlast kdyz ti pres mail gataway prochazi desitky maily za vterinu.