格式化从Perl脚本发送的邮件正文以包含行和空格

时间:2017-11-02 13:19:04

标签: html perl email

我需要通过我的perl脚本发送邮件:

use MIME::Lite;

GetOptions(
    'mail|m:s' =>\$recipients
)
my @recipients = split(/,/, $recipients);

sub sendmail {
    chomp @recipients;
    $to = "@recipients";
    $from = 'xyz@gmail.com';
    $subject = 'Output';

    $msg = MIME::Lite->new(
        From     => $from,
        To       => $to,
        Subject  => $subject,
        Data     => $mailbody
    );

    $msg->attr("content-type" => "text/html");
    $msg->send;
    print "Email Sent Successfully\n";
}

在这里,我将输出附加到mailbody,如:

mailbody.=qq(Welcome\n); 

是包含必须通过电子邮件发送的输出的语句。

如何格式化此输出以包含其他行和/或空格?我认为 mailbody。= qq(Welcome \ n); 也不接受\n甚至许多空格,这会产生一行内容。

2 个答案:

答案 0 :(得分:3)

你说过:

"content-type" => "text/html"

这意味着您正在编写HTML(或者至少告诉电子邮件客户端您是。)

如果你想发送纯文本并使用文字空格格式化,那么就不要声称发送HTML!

 "content-type" => "text/plain"

如果要发送HTML,请编写具有所需格式的HTML(例如,使用<p>...</p>表示段落,使用style="text-indent: 1em;"缩进块的第一行。)

答案 1 :(得分:0)

如果您想发送HTML(如content-type所示),则需要使用HTML标记(<br><p>...</p>等)来格式化文字。

如果您想使用换行符来设置文字格式,则需要将content-type更改为text/plain

其他一些建议:

  • 我不推荐使用MIME :: Lite。现在,您应该使用Email :: *命名空间中的内容 - 也许Email::SenderEmail::Stuffer(我想我昨天提到过这一点)。
  • 在将其分为chomp()之前,您应该$recipients @recipients
  • 您在@recipients内使用sendmail(),但未将数组传递给子例程。在子程序中使用全局变量是不好的做法 - 它使您的子程序不那么便携,难以维护。
  • MIME :: Lite期望以逗号分隔的字符串中的多个收件人。因此,将$recipients拆分为@recipients毫无意义。