我正在尝试使用MIME::Lite::TT::HTML
发送电子邮件。它工作得很好,但我无法弄清楚如何将它与附件一起使用。
我试过了:
$msg->attr("content-type" => "multipart/mixed");
$msg->attach(Type => $mime,
Path => $attachment,
Filename => $name, );
但它打破了这个信息。 HTML和TXT部分不再被解释为相同的内容,因此内容显示两次。
那么使用MIME::Lite::TT::HTML
添加附件的正确方法是什么?
答案 0 :(得分:1)
不幸的是,电子邮件似乎不能同时包含备用部件和附件。
我和MINE::Lite::TT
达成了协议,这似乎与代码一致。现在不会有任何HTML电子邮件: - /
答案 1 :(得分:0)
我在使用动态图像和字段(名称,专业)附加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 = 'no-reply@abc.com';
my $to_address = 'to@address.com';
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);
答案 2 :(得分:-1)
我认为mime-type应该是multipart / alternative