Thread Mail in DB speichern (10 answers)
Opened by ja.bla at 2007-07-03 15:06

jan
 2007-07-06 16:06
#78165 #78165
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
der fehler liegt beim parsen ...
Code: (dl )
if(my $parsed = Email::MIME->new(@$message)){


bringt nicht das gewünschte ergebnis. du übergibst hier einen array. wenn du print einen gibst, gibt es ihn aus, daher scheint es alles korrekt zu sein ... aber Email::Mime nimmt einfach den ersten parameter. der rest bleibt weg. daher klappt's nicht.

etwas klarer wird's in meinem code, das sind die zeilen
Code: (dl )
1
2
3
4
my $message = $pop->get($msgid);
my $messageall = join("", @$message);

if(my $parsed = Email::MIME->new($messageall)){


und komplett:
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
31
32
33
34
35
36
37
38
39
40
#!/usr/bin/perl -w

use strict;
use Email::MIME;
use Net::POP3;
use Data::Dumper;
#my $file = 'Beispielnachricht.txt';
#my $file = 'multipart.txt';
#my $message = do { local( @ARGV, $/ ) = $file; <> };

my $host = '...';
my $user = ':::';
my $pw = '---';

my $pop = Net::POP3->new($host) || die("Kein Kontakt zu $host. $!");
my $anzahl = $pop->login($user, $pw);
my $msgnums = $pop->list; # hashref of msgnum => size
my @msgids = keys %$msgnums;
my $msgid = shift(@msgids);
my $message = $pop->get($msgid);
my $messageall = join("", @$message);

if(my $parsed = Email::MIME->new($messageall)){
my $absender = $parsed->header('from');
my $subject = $parsed->header('subject');
my @parts = $parsed->parts;
my $parts = $parsed->parts;
print "Absender: " . $absender . "\n";
print "Betreff: $subject\n";
print "Parts: $parts\n";
for my $part (@parts){
if(scalar @{$part->{'parts'}} > 0){
for my $part (@{$part->{'parts'}}){
#next if($part->content_type =~ m/text\/html/);
my $text .= $part->body;
print "Text: $text\n";
}
}
}
}

View full thread Mail in DB speichern