我需要通过我的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
甚至许多空格,这会产生一行内容。
答案 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
。
其他一些建议:
chomp()
之前,您应该$recipients
@recipients
。@recipients
内使用sendmail()
,但未将数组传递给子例程。在子程序中使用全局变量是不好的做法 - 它使您的子程序不那么便携,难以维护。$recipients
拆分为@recipients
毫无意义。