Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11480[/thread]

POP3 get Attachment

Leser: 2


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Gast Gast
 2008-03-17 23:27
#107156 #107156
Hallo leute ich hab ein kleines script das sich mit dem Server verbindet und die Nachricht als TXT datei speichert.

nun möchte ich auch noch dass wenn eine Anlage vorhanden ist sie mir diese downloadet.

Könnt ihr mir bitte sagen wie ich das anstelle?

vielen dank für eure bemühungen

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
use Net::POP3;

$user = "";
$passwd = "";
$pop3Server = "";

$pop3 = Net::POP3->new($pop3Server, Timeout => 5);

print "Einloggen in $pop3Server als $user ...\n";
$messagenum = $pop3->login($user,$passwd) || die "Konnte nicht in $pop3Server einloggen";
print "Sie haben $messagenum Nachrichten\n\n";

# Betreffszeilen der neuen Emails werden ausgelesen und angezeigt.
# Siehe unten für eine Erläuterung dieses Code-Blocks


for ($i=1;$i<=$messagenum ;$i++) {
open(file, ">$i.txt") || die "Datei wurde nicht gefunden\n"; # Datei zum anhängenden Schreiben öffnen
$subject = $pop3->top ($i);
foreach $zeile (@$subject) {print file "$zeile";}
print file '\n' x 10;
$subject = $pop3->get($i);
print file "@$subject";
close(file);
#$pop3->delete($i);
print "Mail ($i) - deleted\n";

}

$pop3->quit();
betterworld
 2008-03-18 05:42
#107157 #107157
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Ich kenne das Modul nicht, aber soweit ich das Protokoll (POP3) kenne, ist es ihm egal, ob eine Anlage in der Mail ist. Wenn Du eine Nachricht herunterlaedst, ist sie im Mime-Format, welches Du dann weiter parsen kannst, um eventuelle Anlagen zu extrahieren. Dazu gibt es auch Module.
Gast Gast
 2008-03-18 09:28
#107161 #107161
danke du hast recht

aber wie filter ich das heraus? ich dachte mir vl. gibt es dort schon eine fix vordefinierte funktion wo ich nur mehr sagen muss getattachment und den filenamen... oder gibt es eine einfache lösung das selbst zu machen?

Vielen dank für eure bemühungen

Code: (dl )
1
2
3
4
5
	filename="test.zip"
UEsDBBQAAAAIAJ2ORTZoS7YZGgIAAJoDAAAfAAAAY2hpbGthdFBlcmwvQUFBX1F1aWNrU3RhcnQuaHRtbG1Ty27bMBA8x0D+YaEeerFM+1Y4lIAg7bFF+voAWlxJRChSIVd21KD/3iUlHxLUJ5G7Mzs7
....
------=_NextPart_000_001D_01C888D1.562D9770--
renee
 2008-03-18 09:41
#107163 #107163
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Schau Dir mal CPAN:MIME::Parser an...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
aspnstyle
 2008-03-18 11:18
#107169 #107169
User since
2008-03-18
23 Artikel
BenutzerIn
[default_avatar]
so jetzt habe ich mich eindlich angemeldet :D
btw spitzen community ich werde demnächst auch eine spende abgeben wenn dies erlaubt ist :D kann mir ein Moderator IBAN und BIC per ON senden dann werde ich etwas überweisen.



So ich hab mir jetzt das mit dem MIME::Parser und MIME::Parser:Filer durchgelesen.

Nun habe ich mein ganzes mail in eine TXT datei entpackt (war ca 3mb groß mit attachment) und danach beim mime als input ausgewählt und das ganze dann geparst. aber das mit dem output funktioniert bei mir leider nicht ganz. ich kann zwar alles andere parsern wie mime type,absender,empfänger,blablabla aber sobalt ich das mit der Datei probiere schreit er ....

kann mir das jemand vielleicht mit einem bsp genauer erläuter? vl. hat dies ja jemand schon einmal programmiert.

vielen dank für eure bemühungen.
Gast Gast
 2008-03-18 13:08
#107180 #107180
Uns fehlt etwas Information zu dem Problem mit Mime::Parser.
Wie hast du es gemacht? Welche Fehlermeldung "schreit" Perl bei dem Mail?
aspnstyle
 2008-03-18 15:42
#107200 #107200
User since
2008-03-18
23 Artikel
BenutzerIn
[default_avatar]
Das ist mein Script zurzeit.
1: Also in der 1.txt Datei ist das ganze Email sammt Datei.
2-4: Danach wird liest er den MIME-Stream und parst ihn und liefert ein mime-objekt zurück
5: Legt fest das es auf der HDD gespeichert werden soll
6-7: Legt den Output platz fest
8: Legt den namen von der datei fest wenn keiner vorhanden ist?
9-10: Würde dein Header und Body ausgeben
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl
use MIME::Parser;


1: $txtfile ='mail/1.txt';
2: $parser = MIME::Parser->new();
3: open(INPUTSTREAM,"<$txtfile") or die $!;
4: $entity = $parser->read(\*INPUTSTREAM);

5: $parser->output_to_core();
6: $pfad= '/test';
7: $parser->output_dir($pfad);
8: $parser->output_prefix("msg1");
9: #$entity->print_header(\*STDOUT);
10: #$entity->print_body(\*STDOUT);


ok soweit habe ich es verstanden aber jetzt wird es schwierig bzw jetzt hänge ich da mir die englishen anleitungen jetzt auch einwenig schwierig werden.

Wenn ich jetzt nur das Attachment brauche dann müsste ich ja jetzt mit dem decoden von dem BODY weiter machen oder? da die Datei ja im Body vorhanden ist... aber genau daran scheitere ich weil ich jetzt leider nicht mehr weiter weis.
Gast Gast
 2008-03-18 16:06
#107204 #107204
Doch nicht mit den Zeilennummern am Anfang, oder?
Gast Gast
 2008-03-18 16:22
#107207 #107207
Du solltest übrigens besser immer use strict und use warnings verwenden!

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use MIME::Parser;
use strict;
use warnings;

my $txtfile ='1.eml';
my $parser = MIME::Parser->new();
open(INPUTSTREAM,"<", $txtfile) or die $!;
my $entity = $parser->read(\*INPUTSTREAM) or die $!;

$parser->output_to_core();
my $pfad= '/tmp';
$parser->output_dir($pfad);
$parser->output_prefix("msg1");
#$entity->print_header(\*STDOUT) or die $!;
#$entity->print_body(\*STDOUT) or die $!;


Ich weiß nicht, was du falsch machst, aber ich bekomme bei mir sowohl die angehängten Mime-Parts (PGP-Signatur, Perl-Skript) als auch den Body als einzelne Dateien.
aspnstyle
 2008-03-18 16:11
#107208 #107208
User since
2008-03-18
23 Artikel
BenutzerIn
[default_avatar]
... ich arbeite zwar erst seit 3 tagen mit PERL aber so dumm bin ich auch wieder nicht *gg* das macht mein Notepad++ Editor automatisch wenn ich es rauskopier. und auserdem hab ich die zeilen für die beschreibung oben verwendet... :D
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2008-03-17 23:27.