Portál AbcLinuxu, 1. června 2025 02:56


Dotaz: automatické uložení přílohy z emailu

9.6.2005 15:21 Fanda
automatické uložení přílohy z emailu
Přečteno: 504×
Odpovědět | Admin
Zdravím, potřeboval bych vyřešit následující věc. přijde mi mail z konkrétní adresy, s konkrétním subjektem a připojeným souborem (textový soubor, kde se ale mění název) Tento soubor bych potřeboval automaticky okamžitě po doručení uložit do konkrétního adresáře. Jak v procmail ofiltrovat splnění příslušných podmínek mám zvládnuto, poslat ten mail pak skriptu taky umím, ale neumím tím skriptem z něj vyseparovat tu přílohu a pod příslušným jménem ji uložit do příslušného adresáře. Existuje nějaký takový skript? Nejsem zdatný programátor, takže sám si to asi naprogramovat nezvládnu. Ideální je v procmail volat |/usr/local/sbin/save_attachement /kam/to/ulozit/

Jedná se o doručování objednávek v datové podobě, které adresát teď ukládá ručně až po doručení do jeho klienta a pak načítá do obch.systému. Chtěl bych mu tímto ulehčit práci.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.6.2005 15:43 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: automatické uložení přílohy z emailu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Třeba munpack.
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog
9.6.2005 15:53 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: automatické uložení přílohy z emailu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nahraď print za něčím, co něco dělá...
#!/usr/bin/python
import sys, email
for part in email.message_from_file(sys.stdin).walk():
    ctype = part.get_content_type()
    filename = part.get_filename()
    payload = part.get_payload(decode=True)
    if payload:
        print "%s: `%s', %u bytes" % (ctype, filename, len(payload))
        # file('/bla/bla', 'w').write(payload)
9.6.2005 16:44 fanda
Rozbalit Rozbalit vše Re: automatické uložení přílohy z emailu
Tak tímto skriptem se mi to bohužel nedaří. Nestane se nic a jelikož python mi nic neříká, tak nevím, kde by mohla být chyby, resp. jak ji najít. Když ten skript nahradím jednoduchým bashovým skriptem se zápisem hlášky do souboru, tak to funguje, takže v procmailu chyba nebude.

Jestli jsem to správně pochopil, nahradil jsem řádek s print, tím řádkem za ním, samozřejmě odkomentovaným a /bla/bla jsem nahradil mojí reálnou cestou.

Jak bych tam doplnil něco podobného jako v tom bashovym skriptu, tj.třeba nějakej zápis do logu, abych viděl, že skript proběh a ž eje problém třeba jen v tom uložení přílohy.

Díky Fanda.
10.6.2005 06:39 <Luda> | skóre: 5
Rozbalit Rozbalit vše Re: automatické uložení přílohy z emailu
Ja jsem pouzival tohle, je to v perlu, odnekud jsem to stahnul uz nevim ani odkud, ale fungovalo to.

#!/usr/bin/perl -w
# Ulozi prilohu z mailu do adresare a zapise log
#
#
use strict;
use MIME::Parser;

my $attachdir;
($attachdir)=@ARGV;


my $logfile='~/log/attaches.log';

my $parser=new MIME::Parser;
$parser->ignore_errors(1);
$parser->extract_uuencode(1);
$parser->tmp_recycling(0);
$parser->output_to_core(1);
my $entity=$parser->parse(\*STDIN);

my $from=$entity->head->get('From');
my $subject=$entity->head->get('Subject');
my @parts=$entity->parts;
my $aname='attachment001';
while(my $part = shift(@parts)) {
  if($part->parts) {
      push @parts,$part->parts; # Nested multi-part
      next;
  }
  my $type=$part->head->mime_type || $part->head->effective_type;
  if($type !~ /^(text|message)/i) { # Not a text, save it
      my $filename=$part->head->recommended_filename || $aname;
      $aname++;
      my $io=$part->open("r");
      open(F,"> $attachdir/$filename");
      my $buf;
          while($io->read($buf,1024)) {
          print F $buf;
      }
      close(F);
      $io->close;
      open(LOG,">> $logfile");
      print LOG localtime()." From: $from\t Subject: $subject\t";
      print LOG "File: filename\n";
      close(LOG);
 }
}
#========== EOF =======================


10.6.2005 07:46 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: automatické uložení přílohy z emailu
Ten skript funguje. Nejspíš nemáš v procmailu flag f, nebo kdoví.

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.