2013-11-25 1 views
0

Вот код для отправки по электронной почте:Отправка .xls в качестве вложения электронной почты с помощью Perl :: MIME

use Email::MIME; 
use IO::All; 

my @parts = (
     Email::MIME->create(
       attributes => { 
         filename  => "report.xls", 
         content_type => "application/vnd.ms-excel", 
         encoding  => "base64", 
       }, 
       body => "Body added as per the answer to this question" #no effect 
     ), 
     Email::MIME->create(
       attributes => { 
         content_type => "text/plain", 
         charset  => "US-ASCII", 
         encoding  => "base64", 
       },  
       body_str => "$body_of_message", 
     ), 
); 

use Email::Send; 

my $sender = Email::Send->new({mailer => 'SMTP'}); 
$sender->mailer_args([Host => 'localhost']); 
$sender->send($email); 

Теперь я могу отправить почту и, но report.xls пуста т.е. 0 байт. Он присутствует в моем локальном каталоге, и я не могу понять, почему он не подбирается как вложение. Я попытался дать абсолютный путь, но это тоже не работает.

ответ

2

Кажется, вы забываете параметр body в первом Email :: MIME> create call (для прикрепления). См. Пример perldoc Email :: MIME.

0

Возможно, вы захотите изучить Mail::SendEasy, поскольку он поддерживает аутентификацию и вложения SMTP.

Если вы настаиваете на использовании Email::MIME - обратите внимание на документацию, которую рекомендует использовать Email::Stuffer.