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