0
私のスクリプトのこのセクションでは、私はこのような形式の電子メールを持っている必要があり、テスト用メールアドレスから自分自身に電子メールを送信します。1つの大きな電子メールと複数の小さな電子メールでデータを送信するにはどうすればよいですか?
$キー名$ keyexpr $ keycount $ keyavailable
$キー名$ keyexpr $ keycount $ keyavailable
$キー名$ keyexpr $ keycount $ keyavailable
$キー名$ keyexpr $ keycount $ keyavailable ...など
代わりに、私はいくつかのメールを受信複数のデータの代わりに1行のデータだけを使用します。どうすればいい?
if ($debug and !$hidestdout) {
$smtp = Net::SMTP->new($mailhost, Debug => 1);
}
else {
$smtp = Net::SMTP->new($mailhost);
}
eval {
$smtp->mail($mailfrom) || die("$!\n");
if ($smtp->to(split(/,/, $mailto))) {
$smtp->data();
$smtp->datasend("Subject: License File Status Report\n");
$smtp->datasend("\n");
$smtp->datasend("\t$keyname $keyexpr $keycount $keyavailable\n");
$smtp->dataend();
} else {
print "\tERROR SENDING EMAIL, RUN WITH DEBUG FOR MORE INFO: ", $smtp->message();
print "\tCHECK MAIL KEYWORDS: mailhost=$mailhost | mailfrom=$mailfrom | mailto=$mailto\n\n";
print LOGFILE "ERROR SENDING EMAIL, RUN WITH DEBUG FOR MORE INFO: ", $smtp->message() if ($log ne "");
print LOGFILE " RUN WITH DEBUG, CHECK MAIL KEYWORDS: mailhost=$mailhost | mailfrom=$mailfrom | mailto=$mailto\n" if ($log ne "");
}
$smtp->quit;
};
if ([email protected]) {
print "\tERROR SENDING EMAIL, RUN WITH DEBUG FOR MORE INFO\n";
print "\tCHECK MAIL KEYWORDS: mailhost=$mailhost | mailfrom=$mailfrom | mailto=$mailto\n\n";
print LOGFILE "ERROR SENDING EMAIL, RUN WITH DEBUG FOR MORE INFO\n" if ($log ne "");
print LOGFILE " CHECK MAIL KEYWORDS: mailhost=$mailhost | mailfrom=$mailfrom | mailto=$mailto\n" if ($log ne "");
}
あなたが表示するコードは、その1行で電子メールを送信したようです。これらの変数が変更されて新しいデータ行が作成されるループ内にある場合は、もちろん別の電子メールを送信します。まず、すべてのデータを集めて(私はこの周りにあると思われるループ内で)、すべてのデータを電子メールで送信します。 – zdim
@Filburt配列を$ smtp-> datasendフィールドにダンプできませんでしたか?ダンプを使用した唯一の方法はdump(@arr)です。 – Titanfox
さて、そうですね。しかし、なぜダンプで?あなたのデータからすべての文字列を構築し、 'datasend'を使ってそれを送信します。同様に、 'my $ data = join '\ n'、@ all_data'、そして' datasend($ data) 'のようになります。私は確信していませんが、 'datasend'もarrayrefを取ることがあります。 – zdim