我遇到类似的问题附加PDF文件和模板HTML与动态图像和字段(名称,职业),我也使用MIME::Lite::TT::HTML
和其他库。
问题是,如果您没有分开模板,或者您没有包含库HTML::Template;
它会同时在附件中发送电子邮件正文中的文本和html文件。该模板只使用'text/html'。
这里的工作代码片段: 只要改变变量,以满足您的需要:
模板HTML - test2.html
<html>
<head>
<title><TMPL_VAR NAME=profession></title>
</head>
<body>
<table>
<tbody>
<tr>
<td>
<img src=<TMPL_VAR NAME=photo> alt="my photo" width="700"/>
</td>
</tr>
<tr >
<td>
<TMPL_VAR NAME=applicantname>
</td>
</tr>
</tbody>
</TABLE>
</body>
</html>
下面是为:email.pl
use strict;
use warnings;
use MIME::Lite::TT::HTML;
#use MIME::Base64 qw(encode_base64);
use Authen::SASL;
use Net::SSL;
use HTML::Template;
my $from_address = '[email protected]';
my $to_address = '[email protected]';
my $mail_host = '';
my $mail_user = '';
my $mail_password = '';
my $mail_port = 25;
my $template = HTML::Template->new(filename => 'test2.html');
$template->param(applicantname => "Applicant name");
$template->param(profession => "Designer");
$template->param(photo => "photo location or url path");
my $msg = MIME::Lite->new(
From => $from_address,
To => $to_address,
Subject => 'Applicant Resume',
Type => 'text/html',
Data => $template->output()
);
$msg->attach (
Type => 'application/pdf',
Path => 'C:\Users\downloadfiles/filetest.pdf',
Filename => 'filetest.pdf',
Disposition => 'attachment'
) or die "Error adding : $!\n";
$msg->send('smtp',$mail_host,HELLO=>$mail_host,PORT=>$mail_port,AuthUser=>$mail_user,AuthPass=>$mail_password,Timeout=>60);
如何你是在第一个地方创建'$ msg'吗?我认为你最好不要在创建消息后直接使用Content-Type。只需创建一条新消息,附上您想要附加的内容,并让图书馆负责提供合适的类型。 – tripleee
@tripleee嗯,我使用的代码非常相似,这是在文档中(减去编码的东西)http://search.cpan.org/~chunzi/MIME-Lite-TT-HTML-0.03/lib /MIME/Lite/TT/HTML.pm –
所以,如果你省略'$ msg-> attr()'调用,你会得到更好的结果吗? – tripleee