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 2 sati, 37 minuta
  • drlovric: Za sta ti konkretno mirroring sluzi? Ja mu nisam nasao primjenu :/
  • stefanjos: affinty na popustu 50%. ja sam si uzeo novu licensu. do sada sam bio na v1
  • stefanjos: tako da, meni je to top feature
  • stefanjos: ja imam australski app store i iphone mirroring koristim svaki dan
  • drlovric: To ces probati jednom i nikad vise. Nema razloga za biti razocaran :)
  • Zdravac: - NIJE :/
  • Zdravac: Jel proradio iPhone Mirroring? :)
  • Yonkis: iOS 18.1.1 / macOS Sequoia 15.1.1 [link]
  • kupus: pretpostavljam da to ide meni, znaci fino radi.
  • kupus: hahaha
  • drlovric: Znas kako lijepo klepece. Mozes i mijenjati zvuk. Merak pravi ????????
  • kupus: svejedno hvala smayoo
  • smayoo: Ma nemoj me zajebavat... :D
  • drlovric: Prekrasna aplikacija ako zelite zvuk fancy mehanicke tipkovnice :) [link]
  • drlovric: I ja to ocekujem. Na proljece cu u USA i iskreno se nadam da ce izaci do tada. Da donesem makar dva komada :)
  • Borisone: Osim ako nisi na ti s Tim Cookom, najbliže nagađanju kada je: [link]
  • VanjusOS: zna li netko, hoće li izaći uskoro Air sa M4 čipom?
  • smayoo: Pokušao sam, ali sam odustao kad me zavrtio u krug s registracijom i sign-inom na Epic games. Najprije kaže da može iskoristiti moj AppleID, kad napravi login preko AppleID i kažem da ne želim pokazati svoj AppleID onda me opet svejedno traži login. Tako da... sorry, ne bih.
  • kupus: hvala
  • kupus: moze li netko probat ovaj besplatan virtualan masterpiece na m macovima? [link]
  • ping: @drlovric imaš besplatne konvertere na netu pdf to excel ili konvertiraj u jpeg pa potrazi online free konverter ocr to excel
  • drlovric: nemam Acrobat....smo PDF Exprt i Wondershare.... Raspadne se na oba
  • drlovric: Daj mi mail na poruku pls, pa da ti posaljem....a kakav Pentagon, prosla su ta vremena, glupost neka :)
  • Zdravac: negdje ju uploadaj, pošalji mi link pa ak hoćeš, da vidimo kak će ispasti (osim ako nisu neke secret Pentagon pi*darije :)
  • Zdravac: @drlovric - "export to excel" ?! Adobe acrobat
  • drlovric: Imam fakturu u PDF, htio bih od nje napraviti Excel file. Sta da radim? :)
  • mariolino1971: Pozdrav. Pokušavam poslati oglas no stalno dobivam poruku 413 Request Entity Too Large. U čemu je problem?
  • kupus: UK korisnici vs Apple [link]
  • Yonkis: Jeste li znali da se iPhone sam reboota ako nije otključan u 72 sata? [link]
  • Yonkis: jeste čitali komentare na [link]
  • Ender: takodje zainteresovan za neki IPTV, predlog moze u PM.
  • cariblanco: Ako hočeš ja ti svog "provajdera" kojeg koristim 4-5 godina, pošaljem na pp ?
  • cariblanco: Kako veli Zdravac dobar iptv za 10 E i imaš sve i gdjedaš od kud hočeš. Meni je to jako važno pošto puno putujem, trebam samo dobar net i mirna bosna
  • drlovric: Moj Telemach nema Arene vec Sport Klubove....ali postoji kabelska u zgradi koja ima Arene, preko koaksijalnog kabela.... Pa sam se tehnloski vratio deteljece unatrag. Ali radi evo :)
  • Zdravac: Ali to je paket ex yu kanala, nema samo sport vec sve
  • Zdravac: Kvalitetni, koji mogu preporučiti 10 eur/mj
  • Zdravac: Ima, iptv
  • kupus: hometv to go ili kako već
  • kupus: znači ide i eronet aplikacija
  • kupus: u bih prava ima arenasport ako se ne varam
  • drlovric: Jel ima neki nacin da se HNL Supersport liga gleda online? Neki app? Streaming? Iptv?
  • cariblanco: Prošlo iz petog pokušaja...bit će da je Riba na suhom ;)
  • cariblanco: Zašto mi neće primiti odgovor o ogulinskom zelju...klikam tri puta i ništa, a regan sam ?
  • Riba: Ali vjerojatno je ista prica kao i sa Studion.
  • drlovric: Raskopali su novig Minija. Izmjenjiv je disk. Vjerojatno radi njihove SKU ustede, ne radi korisnika. Uglavnom nije zalemljen.
  • kupus: nije, to je isto kao i apple.hr
  • zvone: Imaju apple.hu. Valjda je to istyle.
  • kupus: samo hoće li ti htjet prodat minija s 256gb storagea, to je pravo pitanje :P :)
  • kupus: a imaš i našeg dpasarica s foruma, pa se njemu javi. vjerujem da ti može složiti konkurentnu cijenu
  • kupus: imaš translate u browseru, čak i u firefoxu od ne toliko davno

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Komentari

Anketa

Koji Mac koristite?

Page Speed 1.26 Seconds

Provided by iJoomla SEO