0

この質問がSOに存在しないとは信じがたいですが、Perlのインスタンスまたは同様のインスタンスを見つけることができませんでした....

とにかく、メールに複数のファイルを添付するには、どの Perl モジュールを使用すればよいですか?

現在、このコードを使用して単一の添付ファイルを含む電子メールを送信していますが、複数の添付ファイルを処理するように変更する方法がわかりませんでした:

my $mail_fh = \*MAIL;
open $mail_fh, "|uuencode $attachment $attachment |mailx -m -s \"$subject\" -r $sender $recipient";
print $mail_fh $message;
close($mail_fh);

複数の添付ファイルを処理するために、このコード ブロックを変更できますか? それとも、これを実現するために特別なモジュールを使用する必要がありますか? もしそうなら、モジュールは何ですか?どうすればそれをスクリプト化できますか?

助けてくれてありがとう!

4

3 に答える 3

3

私はここで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
于 2011-01-31T18:15:29.297 に答える
2

さらに制御が必要な場合は、 Email::Stuff、またはEmail::MIMEを参照attach_fileしてください。

于 2011-01-31T16:54:39.197 に答える
1

評価はまちまちですが、私はMail::Sender (そしてそれはMail::Sender::Easyの仲間です) が非常に優れていて使いやすく、複数の添付ファイルを処理できるように見えます。

Mail::Internetのインターフェイスが非常に煩わしいことがわかりました。

ただし、上記のものよりも何でも良いはずです。:-)

于 2011-01-31T16:10:09.147 に答える