0

这是我的脚本:

package RFC2822;

use strict;
use Mail::Message;

sub _findTextOrHTMLPart {
   my ( $obj ) = @_;
   my $msg;

   if ( !$obj->isMultipart ) {
      $msg = $obj->body->decoded();
      $msg =~ s/(<[^<]+>)//g if ($obj->head->get('Content-Type') && lc($obj->head->get('Content-Type')) == "text/html");
      $msg =~ s/$(\s*\n)+/\n/g;
      return $msg;
   }
   else {
     for (0..$obj->body->parts) {
        $msg = _findTextOrHTMLPart( $obj->body->part($_) );
        return $msg if $msg;
     }
   }
   return "error";
}

sub parse {
   my ( $rfc2822 ) = @_;
   my $obj = Mail::Message->read( $rfc2822 );
   return { "subject" => $obj->subject , "text" => _findTextOrHTMLPart( $obj ) };
}
1;

但是,它没有正确解析数据(在这个例子中,我使用了带有主题和正文的 html 消息,这个脚本通常必须解析电子邮件的所有部分,以便将其插入到带有其他脚本的数据库中。这是解析:

$VAR1 = {
          'text' => bless( {
                             'MMB_end' => 1656,
                             'MR_log' => 4,
                             'MMB_description' => bless( [
                                                           'Content-Description',
                                                           ' none
'
                                                         ], 'Mail::Message::Field::Fast' ),
                             'MMB_transfer' => bless( [
                                                        'Content-Transfer-Encoding',
                                                        ' none
'
                                                      ], 'Mail::Message::Field::Fast' ),
                             'MMB_begin' => 1656,
                             'MMB_disposition' => bless( [
                                                           'Content-Disposition',
                                                           ' none
'
                                                         ], 'Mail::Message::Field::Fast' ),
                             'MMB_message' => undef,
                             'MMBL_array' => [],
                             'MMB_type' => bless( [
                                                    'Content-Type',
                                                    ' text/plain
'
                                                  ], 'Mail::Message::Field::Fast' ),
                             'MMB_eol' => 'NATIVE',
                             'MMB_id' => bless( [
                                                  'Content-ID',
                                                  ' none
'
                                                ], 'Mail::Message::Field::Fast' ),
                             'MMB_checked' => 0,
                             'MMB_seqnr' => 0,
                             'MR_trace' => 4,
                             'MMB_modified' => 0
                           }, 'Mail::Message::Body::Lines' ),
          'subject' => ''
        };

任何人都可以帮助我吗?

谢谢。

4

0 回答 0