使用`MIME :: Lite :: TT :: HTML`发送电子邮件附件

时间:2011-08-22 07:31:01

标签: perl email

我正在尝试使用MIME::Lite::TT::HTML发送电子邮件。它工作得很好,但我无法弄清楚如何将它与附件一起使用。

我试过了:

$msg->attr("content-type"  => "multipart/mixed"); 
$msg->attach(Type => $mime,
             Path => $attachment,
             Filename => $name, );

但它打破了这个信息。 HTML和TXT部分不再被解释为相同的内容,因此内容显示两次。

那么使用MIME::Lite::TT::HTML添加附件的正确方法是什么?

3 个答案:

答案 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