Как прикрепить несколько файлов к электронной почте с помощью Perl?

StackOverflow https://stackoverflow.com/questions/4852959

Вопрос

Мне трудно поверить, что этот вопрос не существует, поэтому я не мог найти экземпляр или один, похожий на 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);

Можно ли изменить этот блок кода для обработки нескольких вложений? Или мне нужно использовать специальный модуль, чтобы справиться с этим? Если так, что такое модуль и как бы я его написал?

Спасибо за помощь!

Это было полезно?

Решение

Я закончил тем, что пошел с примером, используя 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 Если вам нужно больше контроля.

Несмотря на смешанные рейтинги, я обнаружил Mail :: отправитель (И это приятель Mail :: sender :: easy) чертовски хорошо и прост в использовании, и выглядит так, как будто он может обрабатывать несколько вложений.

Я обнаружил, что интерфейс чрезвычайно раздражает в Mail :: Интернет.

Все должно быть лучше, чем то, что у вас есть выше, хотя. :-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top