Я сталкиваюсь с подобной проблемой при прикреплении файла PDF и шаблона HTML с динамическим изображением и полями (имя, профессия), я также использую MIME::Lite::TT::HTML
и другие библиотеки.не разделил шаблон, или вы не включили библиотеку HTML::Template;
, и она отправит текст и html-файл в теле письма с приложением.В шаблоне используется только текст / 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);