使用sendmail使用Perl发送电子邮件

rah*_*huL 6 email perl

我按照本网站的示例使用Perl发送电子邮件.代码如下:

my $hostname = `hostname`;
my $this_day = `date`;
my $email = "i.h4d35\@gmail.com";
my $to = "$email";
my $from = "admin\@$hostname";
my $subject = "SCHEDULE COMPLETE - $this_day";
my $message = "Student schedule for today, completed for the following students: \n\n$names\n\nHave a nice day...";
open(MAIL, "|/usr/sbin/sendmail -t");
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
print MAIL $message;
close(MAIL);
Run Code Online (Sandbox Code Playgroud)

邮件被发送但主题出现在邮件正文中,电子邮件没有主题.我该如何解决?

PS:还没有使用MIME::Lite,因为我还在学习这个.

Ken*_*ric 8

使用网站上的示例是个坏主意.

特别是任何指示您直接制作和发送低级格式的网站.

您不应手动实现以下任何格式:

  • 电子邮件
  • HTML
  • CSV
  • IRC协议
  • 等等

当他们应该简单地告诉您如何使用模块实现这些任务时,哪些网站无法详细说明如何操作.

这是一个更简单的方法,使用Email :: Sender和Email :: Simple,这两种软件都是由处理电子邮件为生的人编写的.

use strict;
use warnings;
my $hostname = `hostname`;
my $this_day = `date`;

use Email::Simple;
use Email::Simple::Creator;
use Email::Sender::Simple qw(sendmail);

my $email = Email::Simple->create(
 header => [
       From => "admin\@$hostname",
       To => "i.h4d35\@gmail.com",
       Subject => "SCHEDULE COMPLETE - $this_day",
 ]
 body => "Student schedule for today, completed for the following students: \n\n$names\n\nHave a nice day..."
);
sendmail($email);
Run Code Online (Sandbox Code Playgroud)

  • “使用网站上的例子是个坏主意。” 甚至 http://stackoverflow.com ?;) (2认同)