Portál AbcLinuxu, 9. května 2025 00:35

Dotaz: dekódování hlavičky

14.1.2014 13:25 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
dekódování hlavičky
Přečteno: 292×
Odpovědět | Admin
Dobrý den,

pokouším se najít nějaké rozumné (rozumně rychlé a spolehlivé) řešení, jak dekódovat hlavičku emailu.

Příklad :

Subject: =?iso-8859-2?Q?P=F8ed=E1vac=ED_protokol-archiv?=

ideálně v bash scriptu s výstupem utf8 ...

Na netu jsem našel řešení s pythonem, ale pro bash + standatdní příkazy jako reformail a pod. jsem nenašel nic.

Víte někdo o takovém řešení ?

předem díky

Milan

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.1.2014 14:21 lertimir | skóre: 64 | blog: Par_slov
Rozbalit Rozbalit vše Re: dekódování hlavičky
Odpovědět | | Sbalit | Link | Blokovat | Admin
Trochu nerozumím dotazu. Co to je "standardní příkazy"? To je binárka sídlící v /usr/bin? Proč by to nemohl být pythoní script? Nebo script v perlu? To co je v hlavičce je jasně text zakódovaný pomocí MIME quoted-printable s definicí znakové sady mezi prvními 2 otazníky. v Perlu je pro MIME zpracování knihovna perl-MIME-tools. Pak ten script zavolám bashi a mám co potřebuji.
14.1.2014 19:26 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: dekódování hlavičky
Ano, nakonec jsem to udělal v pythonu (moc ten jazyk neznám, perl už vůbec, tak jsem to chtěl obejít).

A tím "standartní" jsem opravdu myslel /usr/bin. Jenže žádný z nich nedělal to, co jeden řádek v pythonu (+10 dalších na obsluhu I/O).

Milan
14.1.2014 19:37 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
Rozbalit Rozbalit vše Re: dekódování hlavičky
Koho by zajímalo, tak : maildec.py :

import re, string, sys
from email.header import decode_header
import codecs

def getheader(header_text, default="ascii"):
  """Decode the specified header"""

  headers = decode_header(header_text)
  header_sections = [unicode(text, charset or default) for text, charset in headers]
  return u"".join(header_sections)

UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
if len(sys.argv) > 0:
  hdr=sys.argv[1]
  a=getheader(hdr)
  print u''+a
else:
  print "error"

V bashi pak

subj=`cat "$bfile" | reformail -x Subject:`
subjd=`python /root/bin/maildec.py "$subj"`

Snad to jde jednodušeji, ale líp jsem to nesesmolil. :-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.