Perlを使用して複数のファイルをメールに添付するにはどうすればよいですか?
-
27-10-2019 - |
質問
この質問が存在しないと信じるのは難しいと思いますが、Perlのインスタンスや同様のインスタンスを見つけることができませんでした。
とにかく、複数のファイルを電子メールに添付するためにどのPerlモジュールを使用する必要がありますか?
現在、私はこのコードを使用して1つの添付ファイルで電子メールを送信していますが、複数の添付ファイルを処理するために変更する方法を理解できませんでした。
my $mail_fh = \*MAIL;
open $mail_fh, "|uuencode $attachment $attachment |mailx -m -s \"$subject\" -r $sender $recipient";
print $mail_fh $message;
close($mail_fh);
このコードブロックは、複数の添付ファイルを処理するように変更できますか?または、これをやってのけるために特別なモジュールを使用する必要がありますか?もしそうなら、モジュールは何ですか、そしてそれをどのようにスクリプト化しますか?
助けてくれてありがとう!
解決
最終的に使用して例を挙げました MIME::Lite
見つかった ここ
use MIME::Lite;
use Getopt::Std;
my $SMTP_SERVER = 'smtp.server.com'; #change
my $DEFAULT_SENDER = 'default@sender.com'; #change
my $DEFAULT_RECIPIENT = 'default@recipient.com'; #change
MIME::Lite->send('smtp', $SMTP_SERVER, Timeout=>60);
my (%o, $msg);
# process options
getopts('hf:t:s:', \%o);
$o{f} ||= $DEFAULT_SENDER;
$o{t} ||= $DEFAULT_RECIPIENT;
$o{s} ||= 'Files';
if ($o{h} or !@ARGV) {
die "usage:\n\t$0 [-h] [-f from] [-t to] [-s subject] files ...\n";
}
# construct and send email
$msg = new MIME::Lite(
From => $o{f},
To => $o{t},
Subject => $o{s},
Data => "Data",
Type => "multipart/mixed",
);
while (@ARGV) {
$msg->attach('Type' => 'application/octet-stream',
'Encoding' => 'base64',
'Path' => shift @ARGV);
}
$msg->send( );
使用例:
./notify_mime.pl -f cheese -t queso -s subject /home/id/cheeseconqueso/some_dir/example1.xls /home/id/cheeseconqueso/some_other_dir/*.xls
他のヒント
見る attach_file
の 電子メール::スタッフ, 、 また メール:: mime さらにコントロールが必要な場合。
混合評価にもかかわらず、私は発見しました メール::送信者 (そしてそれは仲間です メール::送信者:: Easy)使用するのは良いと簡単であり、複数の添付ファイルを処理できるように見えます。
インターフェイスは非常に迷惑であることがわかりました メール::インターネット.
ただし、上記のものよりも優れているはずです。 :-)
所属していません StackOverflow