0

我目前有一个脚本,可以创建一个新的 SMTP 并使用预制的 .oft Microsoft 模板触发一封自动电子邮件。这是实际发送电子邮件的代码。

    use strict;
    use Net::SMTP;
    my $email = "blah@blah.com";
    my $emailTemplate = "C:/place/where/template/goes/template.oft;


    open FILE, "$template" or die $!;
    binmode(FILE);
    my $data = do { local $/, <FILE> };
    close FILE;


    $smtp = NET::SMTP->('smtp.blah.com');
    $smtp->mail{'EMAILGROUP');
    $smtp->to('person@blah.com');

    $smtp->data();
    $smtp->datasend("Subject: This is the subject");
    $smtp->datasend("$data");

    $smtp->dataend();
    $smtp->quit;

这导致以下内容被发送给用户

    ÐÏ à¡± á> þÿ        
    þÿÿÿ
    ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot 

它继续前进。.oft 文件采用 UTF-8 格式,我只是认为它没有正确转换。在实际发送电子邮件之前,我可以做些什么来转换所有这些吗?

4

1 回答 1

3

MIME::Lite : 发送带有已定义字符集或/和附件的电子邮件

使用模块MIME::Lite而不是模块Net::SMTP
它将简化设置正确 MIME 标头的任务,例如声明字符集。

$msg->set("Content-type" => "text/plain; charset=UTF-8");

MIME::Lite可以通过 SMTP(和其他方式)发送电子邮件。

于 2013-07-18T22:02:03.663 回答