MIME::Lite 附加文件 perl 时出错

Posted

技术标签:

【中文标题】MIME::Lite 附加文件 perl 时出错【英文标题】:MIME::Lite error attaching file perl 【发布时间】:2013-04-28 11:57:20 【问题描述】:

500 附加文件时出现内部服务器错误,但不带附件发送时不会出现。

    use MIME::Lite; 


$msg = MIME::Lite->new(
    From    =>'email@domain.com',
    To      =>'email@domain2.com',
    Subject =>'A message with 2 parts...',
    CC      => '',
    Type    =>'TEXT',
    Data    =>'Thank you for your interest in'
);

    ### If I comment out the following attachment code the email sends OK, otherwise i get 500 internal server error

$msg->attach(
    Type     =>'image/gif',
    Path     =>'/images/tree.gif',
    Filename =>'tree.gif',
    Disposition => 'attachment'
)or die "error attaching file\n"; 



$msg->send;

【问题讨论】:

您必须检查您的网络服务器日志以了解实际错误。 【参考方案1】:

只是一个建议和一些我也可以为此推荐的东西。应用此方法将允许您 split 要包含的文本/html 部分和附件,因此您可以根据需要发送具有多属性的消息。

use strict;
use warnings;

use MIME::Lite; 

my $msg = MIME::Lite->new(
        To      => 'email@domain2.com',
        From    => 'email@domain.com',
        Subject => 'A message with 2 parts...',
        Type    => 'multipart/alternative',
);

# Make my text part
my $txt = MIME::Lite->new(
        Type => "text/plain",
        Data => 'Thank you for your interest in',
);

# Make my html part
my $html = MIME::Lite->new(
         Type => 'multipart/related',
);

# Here you can attach what html tags you would like to include.
$html->attach(
     Type => 'text/html',
     Data => "<b>my html is here</b>",
);

$html->attach(
     Type => 'image/gif',
     Id   => 'tree.gif',
     Path => "../images/tree.gif",
); 

$msg->attach($txt);
$msg->attach($html);

my $data = $msg->as_string;

我还看到你在哪里使用die 进行错误处理,这里不需要这样做。

【讨论】:

【参考方案2】:

错误最终在于必须相对于脚本编写 URI。

所以我不得不改变/images/tree.gif

../images/tree.gif

【讨论】:

URI?这是一条路。当然你可以在这里使用绝对路径,但它必须是有效的。

以上是关于MIME::Lite 附加文件 perl 时出错的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Perl 5 中保存通过 MIME::Lite 发送的邮件的备份?

使用 smtp 不使用 perl MIME::Lite 发送电子邮件

在没有 Outlook 的 Windows 7 上设置 MIME::Lite

MIME::Lite 在包升级后在命令通道错误上抛出意外的 EOF

MIME::Lite 和消息 ID

VERP 和 perl 后缀不起作用