下载电子邮件附件

时间:2018-07-16 09:48:00

标签: regex perl email-attachments

我正在使用IMAP服务器读取电子邮件 Mail::IMAPClient 通过SSL的模块。 我能够提取电子邮件的正文,但不能提取附件。

请提出如何下载电子邮件附件的建议?我想避免在附件中下载附件。即多层附件。

这是我获取电子邮件正文的方式

my $struct = $client->get_bodystructure( $msg_id );

if ( $struct->bodytype ne "MULTIPART" ) {
    print "\n BodyEnc:" . $struct->bodyenc();
}

my $rDecode = decode( $struct, $client, $msg_id );

if ( $rDecode ne "" && ( length( $rDecode ) > 2 ) ) {
    print( $rDecode . "\n" );
}

foreach my $dumpme ( $struct->bodystructure() ) {

    if ( $dumpme->bodytype() eq "MULTIPART" ) {
        next;
    }

    $rDecode = "";

    $rDecode = decode( $dumpme, $client, $msg_id );

    if ( ( $rDecode ne "" ) && ( length( $rDecode ) > 2 ) ) {
        print( $rDecode . "\n" );
    }
}

sub decode {

    my ( $process, $imap, $msg_id ) = @_;

    if ( $process->bodytype eq "TEXT" ) {

        if ( $process->bodyenc eq "base64" ) {

            return decode_base64( $imap->bodypart_string( $msg_id, $process->id ) );
        }
        elsif ( index( " -7bit- -8bit- -quoted-printable- ", lc( $process->bodyenc ) ) != -1 ) {

            return $imap->bodypart_string( $msg_id, $process->id );
        }
    }

1 个答案:

答案 0 :(得分:0)

最后,我能够下载电子邮件附件。我只需要创建一个新文件,扩展名与电子邮件中的附件相同,然后通过解码附件内容将内容写入其中。