我遇到類似的問題附加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