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 dana, 10 sati
  • mbp2009: Odlično za PBZ, ali vidim sad da je baterija katastrofa pa onda ću preskočiti dok to ne srede
  • Damirst: Koristim aplikaciju PBZ, istalirao sam public verziju 26 i sve uredno radi
  • Borisone: Čak i da sada radi, možda ju slijedeća public beta skrši
  • Borisone: Prevelika kocka. Ako na iPhonu imaš internet bankarstvo i/ili ostale bitne aplikacije ne savjetujem prelazak na novu slijedeću veliku verziju dok nije na prvoj reviziji (npr. iOS 26.1)
  • mbp2009: Ekipa, itko na ios PB? Zanima me par stvari ali brine me samo pbz aplikacija
  • Yonkis: Ozzy se pridružio legendama :(
  • stefanjos: RIP ozzy!
  • cariblanco: RIP i od mene, mada sad "đavo" trlja ruke, jer mu se ekipa ojačava ;)
  • smayoo: RIP Ozzy Osbourne
  • Gjuroo: Nema za Mac...
  • drlovric: [link]
  • jura22: E da, gdje je to “begišu”?
  • jura22: Izgleda kako ce ova sezona ipak biti bolja od one 2020.!
  • cariblanco: Moj omiljeni bend Guns N’ Roses večeras u begišu....bilo bi fora da kažu "pumpaj" :D
  • Junuz: Yonkis, riješeno.Ubio sam icloud/face time na svim uređajima.Iako se problem manifestovao na 16e.Svakako nekoristim face/imesage.Hvala
  • Yonkis: @Junuz - ti si u USA? Na čijoj si mreži? Vidiš li ti te poruke koje su poslane? Da nemaš USA Apple account? Ne znam, puno informacija nedostaje za ikakvo pojašnjenje. Ili otvori remu/post.
  • cariblanco: Kakav dobar finale tenisa, inače navijam za Noleta, ali on je svoje dao...danas se "griješnik" nije dao u Alcatraz ;9
  • Junuz: Nije baš tako, za par sati su mi naplatili oko 1euro na pozadinsko slanje sms ova u ameriku sa ciljem aktiviranja face time.Iphone koristim od 6 naovamo
  • drpongrac23: @Junuz - pa aktiviraj Facetime i iMessage, ništa te ne košta.
  • Junuz: A naravno nisam siguran kako
  • Junuz: trebao bih pomoć oko pozadinskog slanja sms ova u usa na iphonu.16e model sa novom pretplatom i esim karticom.Trošak raste svako malo a od telekom operatora sam dobio odgovor:U slučaju ako koristite iPhone, Vaš uređaj u pozadini šalje SMS prema svom uslužnom servisu u SAD-u s ciljem aktivacije usluge Facetime i iMessage. Molimo deaktivirajte u postavkama mobilnog uređaja navedene usluge k
  • ping: naravno nije bitno koji smartphone dok god je iphone :)
  • ping: @drlovric koliko se sjećam nije radila ako se spajaš na wifi ali ako koristiš iphone sa hr linijom onda je radilo.
  • drlovric: Koristi li netko MaxTV aplikaciju van HR?
  • Ender: verovatno je to, jer je on sa ekranom od 12", mada je bilo i MB Air-ova 11" pa su imali 2 standarnda USB porta. dobro mozda je on bio malo veci od tog MacBook-a jer je imao onaj siri screen bezel.
  • smayoo: Imao je samo jedan port jer je cijela matična ploča bila toliko malena da nije bilo mjesta za dva. To je bitna ušteda (veličina matične ploče), a ne broj portova
  • Ender: verovatno ce cena biti povoljna uz kompromis da se ukine neke stvari koje postoje kod MB Air-a. recimo MacBook model iz 2015-2016 je cak imao samo jedan USB-C port. neka usteda od par $, al dovoljno da se ustedi taman za bonus nekog menadzera.
  • Ender: Slazem se, masa korisnika nema neke prevelike zahteve, niti koristi zahtevne programe, ali sam sistem postaje s vremenom gladan resursa, i to bude cesto ogranicavajuci faktor. Ali u upravi drage nam firme sede neki ljudi koji vrlo precizno odmere svaki korak, tako da s druge strane mislim da ima smisla, koliko god meni logika govori drukcije.
  • Bertone: Sve ovisi koliko €/$ će tražiti,... masa ljudi još koristi Intel MBA/MBP i ne daje im se 1k€ za osnovni MBA, a potrebe im nisu veće od tu i tamo kojeg dopisa, e-maila ili pogledati kakav video.
  • Ender: malo je bzvz imati MacBook sa procesorom od iPhone-a, a imas iPad sa M1 procesorom. ne vidim segment trzista za taj MacBook.
  • Ender: izgleda ce tako i ovog puta biti. ti MacBook-ovi su imali core-M seriju procesora (M, M3, M5 i M7), a poslednja serija je imala core-i procesore 2017. god.
  • smayoo: Imali su već i prije takav neki proizvod. Onaj "zlatni" macbook 12", zar ne. Pa se nije baš "primio".
  • drpongrac23: [link]
  • drpongrac23: Izgledno je da izlazi low-end MacBook, tj. povratak stare MacBook serije, oviga puta sa iPhone čipom unutra. Ako se ostvari, biti će zanimljivo
  • drpongrac23: @cariblanco - slažem se, no zbog zdravstvenih razloga se bisam usudio ići. Produkcija na svjetskom nivou.
  • cariblanco: Koncert na hipodromu, je neponovljiv po mnogim stvarima...dok sam živ neće ga nitko prestići po mnogim detaljima....ma što god mislili o Marku
  • smayoo: RIP Renato Baretić :(
  • dpasaric: Cijene su ti iste kao u Švicarskoj, kada to prihvatiš, sve bude jednostavnije! :)
  • ping: @drlovric Geneva?
  • ping: A
  • drlovric: Jucer sam stigao a vec sam blago sokiran hrvatskim cijenama. Neke stvari vrijedjaju inteligenciju, ali valjda se brzo naviknem :)
  • smayoo: O, brate, kakav pacijent.. :)
  • dpasaric: Joj on je inače lud tip, ali ovo je skroz fora! :)
  • drlovric: Kakva bolest od videa :) [link]
  • dpasaric: Novi mega-članak na naslovnici! Nije za svakoga, ali za one koji to vole bit će poslastica! :)
  • zoranowsky: Također!
  • vicko: Pridružujem se čestitkama!
  • smayoo: Čestitam svima Dan antifašističke borbe!
  • roPeD: Pokrenuo temu u Softver forumu
  • smayoo: Piši u forum i probaj biti jasniji

Za vikanje moraš biti prijavljen.

Prijava

Prisutni jabučari

Riba, robee, rusty, ^SuperUnknown^, Anonimci (769)

Novo na Jabučnjaku

Teme

Poruke

Oglasi

Anketa

Koji Mac koristite?

Page Speed 0.96 Seconds

Provided by iJoomla SEO