message/partial mailovi
(1 korsinik/a gleda/ju temu) (1) Gost

message/partial mailovi


21.04.2020 | 00:30
Elem, #$%"#&, uredski printer/scanner/kopirka, Konica Minolta Bizhub C224e se pravi pametna.

Uređaj ima +/- iste funkcije kao i onaj kojeg smo imali prije, od Canona. Konica je puno kvalitetniji i brži uređaj, u hardverskom smislu (mlađi je, to sigurno ima veze), ali autore softvera (osobito autora GUI-ja, i onog web-baziranog, i onog na touch-panelu) bi kaznio s 250 godina korištenja tog softvera.

Između ostalog, da sad ne duljim, zbog tako kardinalno us*anog GUIja, mogućnost skeniranja većeg broja stranica odjednom uz pohranu na stick ili u korisnički pretinac na disku uređaja (pa povlačenje k sebi putem browsera) uopće nije opcija korisniku koji nije iznimno informatički iskusan. Tako da takvom korisniku ostaje opcija da mu stroj skenirano pošalje E-mailom, što je jedino relativno jednostavno.

Međutim, ako veličina dokumenta premaši nešto što može proći u jednom mailu, skener to nareže na komade i šalje u više mailova. Onaj prethodni, Canon, radio je to vrlo jednostavno - poslao bi više mailova, u svakom mailu PDF s određenim brojem stranica pa, ako ti je bitno, ti poslije te PDFove spajaj na kompjuteru (što je na Macu vrlo jednostavno - drag & drop operacija u Previewu).

Nažalost, Konica Minolta i tu komplicira pakleno. Pošalje više mailova koji imaju Content-Type "message/partial". Koliko vidim, to je sve uredno, po RFC-u. Dakle, neki client koji to podržava bi uredno trebao skužiti da je to jedan mail izrezan u više komada i na kraju ga u korisnikovom inboxu spojiti skupa i prikazati kao jedan mail s ogromnim attachmentom.

Mail.app očito nije taj. No, koliko vidim googlanjem, uglavnom nije nijedan od meni poznatih mail clienta, bilo za macOS, bilo za windows...

Pitanje glasi, je li se slučajno netko već susreo s ovim problemom, postoji li the-mac-way rješenje? Nešto putem Apple script, bilo da ga se ručno pokreće, bilo da se pokreće sam kad naleti na takav mail?

Relevantni headeri maila izgledaju ovako:

X-Mailer: KONICA MINOLTA bizhub C224e
Message-Id: <5E9DF2C2.0EF.00206BA9672D.ime.prezime@nesto.hr>
MIME-Version: 1.0
Content-Type: message/partial; number=1; total=2;
        id="<5E9DF2C1.0EE.00206BA9672D.ime.prezime@nesto.hr>"
Content-Transfer-Encoding: 7bit

X-Mailer: KONICA MINOLTA bizhub C224e
Message-Id: <5E9DF2C1.0EE.00206BA9672D.ime.prezime@nesto.hr>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="KONICA_MINOLTA_Internet_Fax_Boundary"
Content-Transfer-Encoding: 7bit

--KONICA_MINOLTA_Internet_Fax_Boundary
Content-Type: application/pdf; 
 name="SKM_C224e20042019050.pdf"
Content-Disposition: attachment; 
 filename="SKM_C224e20042019050.pdf"
Content-Transfer-Encoding: BASE64


nakon toga do kraja prvog maila slijedi base64 kodiran sadržaj koji završava naprasno, na kraju retka, bez odjavnog bloka

u idućem mailu (koji je u ovom slučaju i zadnji) relevantni headeri su

X-Mailer: KONICA MINOLTA bizhub C224e
Message-Id: <5E9DF2D8.0F0.00206BA9672D.ime.prezime@nesto.hr>
MIME-Version: 1.0
Content-Type: message/partial; number=2; total=2;
        id="<5E9DF2C1.0EE.00206BA9672D.ime.prezime@nesto.hr>"
Content-Transfer-Encoding: 7bit


nakon čega slijede base64 podaci bez uvodnog bloka, sve do kraja, i na samom kraju, zaključni blok


--KONICA_MINOLTA_Internet_Fax_Boundary--
21.04.2020 | 00:57
Dakle, skripta bi trebala (ako je moguće) reagirati na Content-Type "message/partial" iza čega slijedi podatak koji je to po redu dio, od ukupno koliko dijelova, a svi dijele isti ID (u ovom slučaju je to 5E9DF2C1.0EE.00206BA9672D.email.aderesa.posiljatelja).

U prvom (i samo u prvom) dijelu se može očitati ostale podatke:

- da je sadržaj na početku i na kraju omeđen markerom "--KONICA_MINOLTA_Internet_Fax_Boundary--"

- da je tipa (Content-Type) application/pdf i kojeg je imena datoteka

- da je sadržaj base64 kodiran

U svakom od mailova, prvi prazni redak nakon početka označava da slijedi sadržaj, koji se može protezati kroz više mailova, sve dok se ne naiđe na spomenuti marker.

Ručno, svaki od mailova se može snimiti na disk (File | Save as, Format: Raw Message Source), i onda svaki od tih mailova otvoriti BBEditom ili nečim sličnim, izbrisati headere na početku svakog od mailova, sadržaj pospajati skupa u jedan file i onda taj file base 64 dekodirati, na primjer u terminalu:

openssl base64 -d -in ulaznadatoteka.eml -out izlaznadatoteka.pdf


Još bolje, dalo bi se na disk snimljene raw mailove (.eml format) pospajati jednom terminal komandom

cat prvidio.eml drugidio.eml trecidio.eml itd.eml > sveskupa.eml


pa prije ili nakon cat-anja grep-nuti van sve headere i ostaviti samo base64 sadržaj

onda bi se dalo to sve složiti u pipe, tako da se jednom terminal komandom odradi sve to skupa (grep, cat, openssl base64) i dobije gotov PDF.

Ono što bi ja volio je - da to bude "mac way" rješenje za nenaprednog korisnika. U najgorem slučaju, da u Mail.app (ili Thunderbirdu, ako Mail.app ne može to) selektira sve pristigle mailove s komadima skeniranog dokumenta i onda uklika nešto da se pokrene skripta i nakon toga nađe kompletan skenirani PDF npr. u Downloads folderu. Idealno, da ne mora ni to, nego da inbox filter skuži da je stigao prvi takav mail, da pričeka i pokupi ostale i sve dalje odradi sam.

Može li se to, Lastane?
21.04.2020 | 10:53
Možda ovo može pomoći za prvu ruku:

addons.thunderbird.net/en-US/thunderbird/addon/join-ng/

?
21.04.2020 | 11:01
Našao sam to i ja. Veli: "This add-on has been marked as experimental by its developers"
Kolegica čiji stroj radi na 10.11 ima Thunderbird, probao sam, fakat je "experimental"
Ne radi stabilno, nažalost. A i nije baš da se netko tko nije informatički napredan lako snalazi.
A i problem je to što je zadnja verzija i zadnja zabilješka iz 2016. godine.
21.04.2020 | 17:38
Spominješ Thunderbird i Apple Mail kao moguća okruženja - Apple Mail rješenje je (iz Mac perspektive) jednostavnije jer Apple Mail omogućava pokretanje željenog Apple Scripta za svaki primljeni mail. Thunderbird ne podržava Apple Script, a ni njegov CLI nije od pomoći za ovaj slučaj što znači da bi trebao pokretati skriptu preko nekog postojećeg Thunderbird plugina ili riješiti cijeli svoj problem kroz custom Thunderbird plugin.

Bez obzira kojim putem kreneš, ako ciljaš "stabilno" rješenje za nenaprednog korisnika, zapravo ti treba nekakav queue manager koji rješava problem dijelova mailova koji ne dolaze nužno u inbox slijedom koji ti je potreban: možda treći dio stigne prije drugog, možda zadnji dio, s oznakom kraja, dođe prije prethodnih... možda neki dio ne dođe nikad... nastavi niz.

S obzirom da Apple Script podržava SQLite, to mi se čini najpraktičnije rješenje za u njemu trackati što se zbiva u maileru. Primjerice (pseudo):

za svaki prispjeli mail
  provjeri da li je relevantan (šalje ga Konica)
  ako je
    očitaj mail_id, id, number, part, filename i content
    // mail_id identificira prispjeli mail u Apple Mailu
    // id je identifikator tipa <5E9DF2C1.0EE.00206BA9672D.ime.prezime@nesto.hr>
    dodaj unique record s tim očitanjima u bazu
    // unique je za slučaj da stigne duplić u Mail
    pitaj bazu ima li zapisane sve potrebne dijelove (njih "number") za aktualni "id"
    ako ima
      pitaj bazu spojeni content svih mailova (sortiran uzlazno, prema "part")
      snimi rezultat u temp datoteku
      dekodiraj temp datoteku koristeći poznati "filename" i snimi u predviđeni folder
      obriši temp datoteku
      obriši sve recorde s aktualnim idom u bazi
      ako držiš mailove u maileru dok svi ne stignu i želiš ih tek tada obrisati
        pitaj bazu listu mail_idova prema mail_idu aktualnog maila
        obriši mailove s mail_idovima koje ti je vratila baza
    ako prebacuješ obrađeni mail u arhivu ili ga brišeš odmah po obradi
      prebaci aktualni mail u arhivu ili ga obriši
21.04.2020 | 19:10
Hvala ti na javljanju, Đipi. Znao sam da moram postati u forum "Programiranje", ako želim da mi se javiš.
Dakle, u Mail.app, u preferences, odem na rules i tamo stavim najprije "Edit header list" pa dodam headere koji me zanimaju (X-Mailer i Content-Type, na primjer), onda napravim novo pravilo na inboxu koje kaže, ako je X-Mailer KONICA MINOLTA i Content-Type message/partial, pozovi Apple Script taj-i-taj

Da? Ne?

Onda, dalje... SQLite je nešto što moram instalirati, zar ne? Na SQLite downloads page ima samo jedan link za Mac, kaže ovako:

A bundle of command-line tools for managing SQLite database files, including the command-line shell program, the sqldiff program, and the sqlite3_analyzer program.

To mi ne zvuči kao to što mi treba? Je li to to što mi treba?

Onda, ako je to - to, kako dalje? Kako koristim SQLite iz AppleScripta? Instalira se podrška za SQL u AppleScriptu?

Ako sam te dobro shvatio, SQLite mi samo služi da bi provjerio imam li sve dijelove u inboxu i koji im je redoslijed? A kad to utvrdim iz SQLite samo uzmem listu message-IDova i po njoj pomoću AppleScripta povučem mailove iz Mail.app van? Kamo? Na disk, pa dalje shell skriptom grep i base64 decode?

1000 zašto - 1000 zato...
21.04.2020 | 20:14
Dakle, u Mail.app, u preferences, odem na rules i tamo stavim najprije "Edit header list" pa dodam headere koji me zanimaju (X-Mailer i Content-Type, na primjer), onda napravim novo pravilo na inboxu koje kaže, ako je X-Mailer KONICA MINOLTA i Content-Type message/partial, pozovi Apple Script taj-i-taj


Nisam korisnik Apple Maila pa ne znam iz prve ruke možeš li kreirati takav filter (X-Mailer i Content-Type). Ako Konica ima neko upotrebljivo From polje, ja bih jednostavno filtrirao po njemu. U paketu s filterom (koji samo nacilja mail kojeg želiš obratiti) ide i postavljanje opcije "Run AppleScript" (i odabir odgovarajuće skripte koja radi konkretan posao).

Onda, dalje... SQLite je nešto što moram instalirati, zar ne?


Ne moraš, dio je sistema. Možeš ga koristiti kroz shell (kojeg triggaš kroz AppleScript, što je zaobilazno) ili izravno putem Database Events. Ja bih krenuo od potonjeg.

Kako koristim SQLite iz AppleScripta? Instalira se podrška za SQL u AppleScriptu?


Vidi gornji link, za Database Events.

Ako sam te dobro shvatio, SQLite mi samo služi da bi provjerio imam li sve dijelove u inboxu i koji im je redoslijed? A kad to utvrdim iz SQLite samo uzmem listu message-IDova i po njoj pomoću AppleScripta povučem mailove iz Mail.app van? Kamo? Na disk, pa dalje shell skriptom grep i base64 decode?


SQLite ti (kao baza) u ovom slučaju rješava ključni problem - "pamti što se zbiva" tako da tvoja skripta između dva izvršavanja bude svjesna što se prethodno dogodilo i što se sljedeće može dogoditi. Usputno ga koristiš i za pohranu sadržaja mailova (koje ćeš spojiti i dekodirati). I da, možeš oboje napraviti na neki "gluplji" način, koristeći txt fajlove za spremati u njih info "što se dogodilo", kao i za spremati dijelove mailova koje ćeš spojiti (kao što si predložio, s catom) - ali kad već imaš na raspolaganju bazu koja sve to može napraviti "sama", kemijanje s txt fajlovima bi bio mazohizam.

Pokušat ću pojasniti algoritam koji sam napisao: koristeći filter, u Apple Mailu testiraš koji mail je "relevantan" i samo takve prosljeđuješ dalje na obradu (runnaš skriptu). Skripta parsa (i tu ima najviše tipkanja konkretnog kôda), kako god želiš da to radi, source maila (raw) - sve potrebne informacije (osim mehanike parsanja, koju sam moraš osmisliti) imaš u Apple Mail dictionaryu (u Script Editoru). Bitno je samo da od AppleMaila preuzmeš id maila (zove se "message id"), a da iz sourca iščitaš id (koji dodjeljuje Konica), number, part, filename i content. I da, redundantno je zapisati N puta number i filename, ali u konkretnom slučaju nije bitno - jednostavnije je, a i tako brišeš recorde kad obaviš posao (pa se ne moramo baviti higijenom baze u svakom koraku). Najveći podatak je "content" (to je ono što u konačnici spajaš u jedan fajl i šalješ na dekodiranje). I sve to skupa, kao jedan record, snimiš u bazu. Nakon toga možeš, ali i ne moraš (odmah) obrisati mail koji si upravo obradio.

Kad obradiš prvi mail, ne znaš je li to ujedno i zadnji, a ako nije ne znaš još imaš li ih sve. To možeš saznati od baze (jer tamo sve zapisuješ). Pa zato NAKON što si zapisao record maila kojeg si upravo obradio, provjeriš imaš li u bazi SVE potrebno za dekodiranje. Ako imaš sve dijelove - imaš sve potrebno. Ako nemaš sve dijelove, ne radiš dalje ništa, čekaš da "stignu".

U nekom trenutku (kad budeš obrađivao enti mail) će ti baza vratiti info da imaš sve potrebno za dekodirati sadržaj koji dijeli id (onaj kojeg Konica definira) tog maila. I tada krećeš u pripremu za dekodiranje: tražiš od baze sve dijelove koje moraš spojiti (jer su tamo zapisani i možeš ih dobiti ispravnim redom), spojiš ih (odnosno pitaš bazu da ih spoji kad ti ih vraća) i snimiš to što si dobio na disk. Nakon toga pozoveš (iz AppleScripta, kroz shell) dekodiranje (openssl ...) sa pathom koji se sastoji od predefiniranog foldera i filenamea koji ti je poznat (jer je, redundantno, zapisan u bazi). Nakon dekodiranja radiš housekeeping: brišeš temp datoteku (jer ti više ne treba, samo troši mjesto na disku), purgaš recorde iz baze (jer ti ni oni ne trebaju) i opciono brišeš same mailove u Apple Mailu (jer znaš i njihov id, to je onaj "message id", pa ih nije problem naciljati).
21.04.2020 | 22:29
Hvala ti. Idem se igrati pa se vratim pitanjima.
21.04.2020 | 22:54
Evo jednog. Ja bi, dakle, trebao najprije kreirati bazu i strukturu podataka u njoj, da bi je kasnije koristio kroz apple script, zar ne? Pretpostavljam da je to jednokratan posao i da za to imam neki interaktivni alat. Ima li nešto već instalirano? Ili moram kroz apple script?
21.04.2020 | 22:57
aha, sorry, evo našao sam command line alat
21.04.2020 | 23:06
Ja bi, dakle, trebao najprije kreirati bazu i strukturu podataka u njoj, da bi je kasnije koristio kroz apple script, zar ne?


Tako je.

Pretpostavljam da je to jednokratan posao i da za to imam neki interaktivni alat.


Jednokratan je, a postoje i "interaktivni" (zapravo "vizualni") alati tipa DB Browser for SQLite.

Ima li nešto već instalirano? Ili moram kroz apple script?


Nema ("vizualno", u sistemu), ali možeš kroz shell. Možeš i kroz AppleScript, ali bit će ti lakše s ovim kojeg spominjem.
21.04.2020 | 23:09
Ha! Našao sam i RazorSQL!
21.04.2020 | 23:12
Ha, gle, DB Browser for SQLite imam još od tko zna kad...!
Moderatori: Bertone
  • Stranica:
  • 1

Vikalica™

Zadnja poruka: pred 8 sati, 4 minuta
  • Bertone: :D
  • smayoo: X-D
  • zoranowsky: LOL! :)
  • Gjuroo: :D
  • Ender: na eurosongu ima vise golotinje, al pornic ima bolju muziku :-)
  • Ender: koja je razlika izmedju eurosong-a i pornica?
  • Ender: evo sta kruzi po forumima sada.
  • JOHN: ……naravno uz par iznimki
  • JOHN: Markec je pobjednik bez obzira na brojke! Jako dobra promocija njega kao mladog umjetnika, tradicije, kraja i države od kuda dolazi. Za ostalo/e sam bez komentara. Bilo je tu svega i svačega :)
  • Ender: da ne budem pogresno shvacen, da sam rasista ili sta vec, ali jedan od malog broja normalnih nastupa.
  • Ender: cestitke iz srbije za uspeh i nastup!
  • smayoo: Slažem se!
  • Gjuroo: Saka čast malom na energiji koju je prenio na ljude. Napokon malo masovne pozitive.
  • Zdravac: U svakom slučaju, čestitam mu. Što se mene tiče, on je pobjednik!
  • Zdravac: čini mi se da sam sad u dokumentarcu vidio da Marko ima doma iMac (?), pa si mislim možda je član našeg foruma?
  • Gjuroo: Ma win-win. Kak se već veli, Lazanja je osvojio srca ljudi, a Oni nek si organiziraju Euroviziju u Švici. Ima se, može se :)
  • smayoo: Ja mislim da je HRT okolo lobirao da žiriji ne daju Marku previše bodova jer HRT nema kinte za organizirati natjecanje iduće godine :D
  • cariblanco: Da je Marko nosio suknju, bili bi pobjednici ;)
  • Gjuroo: Rim tim tagi dim!
  • Yonkis: Krehacro, pa ne zove se uzalud Pro.
  • Krehacro: Uh gledam sad usporedbu...pro bolji
  • drlovric: Ma samo Pro. Neka ide zivot :)
  • Krehacro: iPad air m2 ili iPad pro m2?
  • zoranowsky: Isto sam uzeo novog svojevremeno
  • zoranowsky: Išao sam ja pogledati health na svom 12.9 ii gen, ali nema health podatka, inače ok radi, nema problema.
  • drlovric: Pa da, uzeo sam ga cim je izasao. Ne znam sta bih ti rekao za bateriju. Nemam nekih problema, pojma nemam ni na koliko je health. Provjerim pa javim.
  • Yonkis: drlovric: a kakva ti je baterija na njemu, ako pretpostavimo da si ga kupio kad je bio "objavljen"?
  • drlovric: Ja imam iPad Pro (2nd gen). Niti najmanji razlog nemam za upgrade. Oni ubacuju najjace cipove, dok je najveci problem iPada u biti software :)
  • MAK: iPad Air plus Pencil Pro
  • smayoo: Svim Splićanima čestitam dan Sv. Duje! :)
  • cariblanco: kako nogomet može biti okrutan, zaslužili ste najmanje bod
  • cariblanco: Riječani, jeste li spremni za derbi, danas bi trebao biti praznik nogometa na Rujevici
  • smayoo: Možda je to popis po abecedi. ;)
  • cariblanco: Danas čitam VL i koja je najsigurnija zemlja u slučaju holokausta...1 Antartika 2 Argentina ;)
  • Yonkis: Evo, prodajem i neke slušalice, one za u uho. iPhone i sluške, 200€. I nije to sve, one more thing...
  • Mislav2222: ima i 2K 27inca dell monitor, u top stanju na prodaju :D
  • Yonkis: prodao bih iPhone 8 Plus, mijenjao mu bateriju prije cca godinu dana, moram provjeriti, pa ako ima zainteresiranih da ne pišem oglasnik.. Zapravo pišem anyway, valjda tamo netko lurka :)
  • mbp2009: Smayoo riješio sam, nego sad nije za mene, nego nekog drugog
  • accom: O muziki nemam pojma, surfanje je o.k., gaming - isto nemam pojma. :)
  • Krehacro: Dj-ing...Netflix,surfanje i neki gaming :)
  • accom: @Krehacro: meni ne uspjeva koliko bih željeo. Ali je iPad super alat, i sve više mi je neophodan (ajde, navika). Najviše ovisi o tome, što želiš radit.
  • lucija: Dosta ih je uspjesno preslo na iPad.
  • lucija: Nisam no ima na YouTubeu dosta recenzija ljudi koji jesu.
  • Krehacro: Planiram preci sa MacBook air na iPad da koristim kao svoj primarni uredjaj...jel netko to još pokušao i kako mu ide :)?
  • smayoo: Pa zar još to nisi riješio?
  • smayoo: :D
  • mbp2009: Doslovno sam ju ja otvorio hahaha
  • smayoo: @mbp2009, imaš točno tu temu u forumu od prije par mjeseci
  • smayoo: Natrijeve baterije postoje u tzv. REDOX izvedbi već 30 godina, prvenstveno za stacionarne sustave, ali nisu bile pogodne za mobilne jer su bitno manje gustoće pohrane od litijevih, a i veće mase, jer su tekućinske. Velika im je prednost to što su ekološki neutralne, jednostavne za proizvesti i požarno nerizične.
  • m@xym: @Zdravac, OD otkrića nečega u laboratoriju do dolaska na tržište (ako se to upće dogodi) prođe između 5 i 10 godina

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

jura22, Maxxy, Riba, tino1, Anonimci (261)

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Anketa

Kupujete li profesionalni Mac?

Čekam novi modularni Mac Pro - 48.5%
Novac nije problem, kupujem iMac Pro - 0.7%
Kupujem Valjak, baš je lijep i tih! - 0%
Kupujem polovni Mac Pro tower - 11.8%
Nadogradit ću postojeći Mac Pro tower - 2.9%
Običan iMac 27" mi je dovoljan za posao - 5.9%
Skromnih sam potreba, Mac mini je zakon! - 7.4%
Radim na terenu, mora biti MacBook Pro - 3.7%
Ne diram ništa, stari Mac služi me odlično - 10.3%
Kupujem PC kantu i prelazim na Windowse! - 8.8%

Ukupno glasova: 136
Anketa je završena dana: 08 Svi 2018 - 12:17
Page Speed 1.04 Seconds

Provided by iJoomla SEO