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 7 sati, 45 minuta
  • Zdravac: Ja sam očekivao da će biti nas više sa Macbook Air M
  • IgorD: Ja koristim 7 od 14, najbolje da ne diram ništa u anketi ;)
  • drlovric: Najvise nas ima Macbook Pro sa M procesorima. Iznenadjen sam iskreno, ali veliki umovi valjda slicno razmisljaju :D
  • Piko: ups, ..... tipfeler ... ali čak je o cool ovako ;)
  • Piko: M kao Mototola 680x0 :) ....
  • Bertone: ... iako bi ispravnije bilo Intel PC, AMD PC ili ARM PC ;)
  • Bertone: Anketa je diskriminirajuća jer se pod PC hardver navodi samo Windows PC, a ne i Linux PC pa molim ispraviti na Windows/Linux PC :D
  • Yonkis: Ajmo ispočetka sa anketom. :)
  • ZeljkoB: Anketa bi trebala biti multiple choice, osim ako se ne misli sto koristim upravo sada :)
  • Tito: S obzirom na broj glasova... 4 korisnika. Nije neka brojka.
  • drpongrac23: Iznenađuje me u anketi veliki udio Mac Studio korisnika
  • Gjuroo: Ankete na Jabučnjaku su mi oduvijek omiljeni dio. To je dio gdje netko zbilja želi čuti tvoje mišljenje :)
  • Bertone: Bio sam brzoplet i krivo kliknuo,... što sad?
  • Borisone: Nevalja jer je isključiva (samo jedan od ponuđenih izbora).
  • drpongrac23: Napokon nova anketa, nakon 100 godina, ali je zato izvrsna!!!!
  • Zdravac: a možda je car play jedinica bolja opcija
  • Zdravac: trajanje baterije nije bitno, biti će spojen sa punjačem
  • Zdravac: Ima li netko iPad mini viška da mu bezveze stoji? Trebao bih nešto da montiram na motor za navigaciju i da radi continuity funkcija
  • moragd: Mislio sam na atv plus.
  • moragd: Atv sa hrvatskim acountom? Imal neko info jel ce to raditi?
  • dpasaric: Nova anekta! :)
  • Kloba: Vidio sam to jutros. Reko neću staviti tu ako ispadne patka. Ipak, čini se da je ok izvor. Tko zna tko će završiti na giljotini zbog ovoga. Sjetćamo se pijanog vlasnika testnoga iPhonea 4 i kako je Jobs poslije tužo Gizmodo
  • kupus: Novi mb pro s m4 leakan [link]
  • Borisone: To je samo za fizičke osobe.
  • m@xym: Odnedavno znači prije par mjeseci. Ne pratim redovito njihove stranice, ali ne sjećam se da sam prošle godine to vidio. Radi se u njihovom "Easy upgrade" programu: [link]
  • Borisone: Ne tnam što je "odnedavno" ali u ožujku su mi javili da nude samo leasing preko Grenke.
  • m@xym: Borisone, to odnedavno nudi istyle.hr za Apple Watch, iPhone i Mac računala
  • kupus: tj ovaj [link]
  • kupus: [link]
  • kupus: evo borisone
  • Zdravac: Nisan sad isao provjeriti, ali zar nije Sancta Domenica iz ZG nudila?
  • Borisone: Za pravne osobe, a ne za fizičke osobe.
  • Borisone: Nudi li neka tvrtka u HR najam Mac računala? Nešto tipa mjesečno plaćanje, po isteku 2 ili 3 godine zamjena novim uz produženje ugovora.
  • marioart: photoshop za 89€, cijeli CC 430, paralels 60... hrpa nekih antivirusa... ja gledam na DE, mozda na US ima vise :) ... airpods pro 225€...
  • drlovric: Imal jos kakvih dobrih dealova za software, usluge i sl?
  • marioart: da se nadovezem... kako su sad Prime Days na Amazonu, moze se uzeti Family M365 na 15mj za 53€ ... ako nekome eventualno treba :)
  • smayoo: I ja kažem! :)
  • zoranowsky: Libre office FTW!
  • drlovric: Meni je jedna dobra dusa ovdje na Jabucnjaku poklonila MS Office. Neka bulk licenca je bila u pitanju, mislim nesto vezano za obrazovne ustanove. Radi godinama. Sad gledam ovu novu 2024. Skoro su pa identicne. Uopce ne znam niti sto je tu novoga :)
  • Borisone: Microsoft 365 Family (za 6 korisnika) je oko 60 eur kada je na akciji. A često je. Kupiš par komada i miran si par godina.
  • Zdravac: 150 € je ravno 2 godine pretplate na office 365, vjerujem da je to bolja opcija
  • drpongrac23: Ah, trebao je biti plačko!!!!
  • drpongrac23: @drlovric - ????????????????????????????????
  • drlovric: @drpongrac23: Kupujes? :)
  • Kloba: Jebote šta ove poplave rade po BiH, to je prestrašno... :(
  • drpongrac23: Evo i link [link]
  • drpongrac23: Izašao "MS Office 2024" za Mac i PC, kao standalone verzija, pa eto, ako koga zanima…
  • Bertone: Što se je dogodilo? 27 sati nitko ništa nije napisao na forumu :)
  • Yonkis: Dostupan 18.0.1 i za sve ostale apple uređaje (sat, iPad..)
  • zoranowsky: Thx!

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

jura22, MacSlavko, temeljnik, Anonimci (501)

Novo na Jabučnjaku

Teme

Poruke

Anketa

Koji Mac koristite?

Page Speed 1.17 Seconds

Provided by iJoomla SEO