--- trunk/MWS.pm 2004/05/04 15:47:14 4 +++ trunk/MWS.pm 2004/05/05 15:38:35 7 @@ -46,12 +46,10 @@ return $self; } - -sub fetch_message { +sub open_folder { my $self = shift; - my $mbox_id = shift || die "need mbox_id!"; - my ($mbox,$id) = split(/ /,$mbox_id); + my $mbox = shift || croak "open_folder needs mbox name"; if (! $self->{folder}->{$mbox}) { my $mbox_path = $self->{config}->val('folders', $mbox) || croak "comeone removed folder $mbox from config?"; @@ -59,10 +57,19 @@ print STDERR "## open($mbox)\n" if ($debug); } - my $message = $self->{folder}->{$mbox}->find($id) || + return $self->{folder}->{$mbox}; + +} + +sub fetch_message { + my $self = shift; + + my $mbox_id = shift || die "need mbox_id!"; + my ($mbox,$id) = split(/ /,$mbox_id); + + # return message with ID + return $self->open_folder($mbox)->find($id) || print STDERR "can't find message $id in $mbox. Time to re-index?\n"; - - return $message; } @@ -89,7 +96,9 @@ my @arr; foreach my $from ($message->$part) { - push @arr, $from->$sub; + my $tmp = $from->$sub; + $tmp =~ s/^\s*["'](.*)["']\s*$/$1/; + push @arr, $tmp; } return \@arr; } @@ -122,6 +131,22 @@ return $self->fetch_result_by_id($id); } +sub plain_text_body { + my $self = shift; + my $message = shift || croak "plain_text_body needs message!"; + + if (! $message->isMultipart) { + return $message->decoded->string; + } else { + foreach my $part ($message->parts) { + if ($part->body->mimeType eq 'text/plain') { + return $part->decoded->string; + } + } + } +} + + sub fetch_result_by_id { my $self = shift; @@ -131,18 +156,10 @@ my $row; + $row->{'id'} = $id; $row->{'from'} = unroll($message,'from','phrase'); - $row->{'subject'} = $message->get('Subject'); - if (! $message->isMultipart) { - $row->{'body'} = $message->decoded->string; - } else { - foreach my $part ($message->parts) { - if ($part->body->mimeType eq 'text/plain') { - $row->{'body'} = $part->decoded->string; - last; - } - } - } + $row->{'subject'} = $message->subject; + $row->{'body'} = $self->plain_text_body($message); return $row;