8

このウェブサイトの例に従って、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);

メールは送信されますが、件名がメールの本文に表示され、電子メールには件名がありません。これを修正するにはどうすればよいですか?

PS:MIME::Lite私はまだこれを学んでいるので、まだ使用に慣れていません。

4

5 に答える 5

8

Web サイトの例を使用することは悪い考えです。

特に、低レベルのフォーマットを作成して直接送信するように指示する Web サイト。

次の形式を手動で実装しないでください。

  • Eメール
  • HTML
  • CSV
  • IRC プロトコル

モジュールを使用してこれらのタスクを達成する方法を単に説明する必要があるのに、どのように行うかを詳しく説明していない Web サイトはどれですか。

これは、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);
于 2013-11-10T13:25:45.893 に答える
4

の出力にhostnameは改行が含まれているため$from、改行が含まれているため、Subject:行は改行のペアの後に表示されるため、メッセージ本文にあると解釈されます。修正が簡単:

chomp($hostname);

で同様の問題が発生する場合がありますdate

于 2013-11-10T09:52:45.617 に答える
0

このコードは私のために働いた

#!/usr/bin/perl

$to = 'sendmailtouser@company.com';
$from = 'fromuser@company.com';
$subject = 'Party!!!';
$message = 'Details of party';

open(MAIL, "|/usr/sbin/sendmail -t");

# Email Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
# Email Body
print MAIL $message;

close(MAIL);
print "Email Sent Successfully\n";
于 2015-11-30T12:23:13.123 に答える