Прикрепите xlsx к электронной почте с помощью MIME::Lite

#excel #perl #mime-types

#excel #perl #mime-типы

Вопрос:

Я пытаюсь отправить электронное письмо с прикрепленным файлом xlsx, используя Excel::Writer::XLSX и MIME::Lite . Генерация файла Excel работает, так как я могу scp и открыть файл в Excel без каких-либо проблем. Когда я пытаюсь открыть вложение из своего почтового клиента (Outlook 2013), я получаю эту ошибку:

«Excel не может открыть файл»from_2014-06_to_2014-07.xlsx » поскольку формат файла или расширение файла недопустимы. Убедитесь, что файл не был поврежден и что расширение файла соответствует формату файла».

Размер файла, отображаемого Outlook, составляет 444B, но на самом деле это 95K. Раньше я отправлял файлы xls с помощью Spreadsheet::WriteExcel и mime типа «application / vnd.ms-excel» без каких-либо проблем.

Вот что я пытался отправить по электронной почте:

 sub send_mail{
    my $filename = shift;
    my $to_email = shift;
    my $from_email = shift;
    my $date = shift;
    $filename = shift;

    my $mail = MIME::Lite->new(
        'From'          => '$from_email',
        'To'            => $to_email,
        'Subject'       => "Radio/TV stats $date",
        'Type'          => 'multipart/mixed',
        #'content-type'  => 'application/zip',
        #'Data'       => "Here is your stuff",
    );

    $mail->attach(
        'Type'          => 'TEXT',
        'Data'          => "Here is your stuff",
    );

    $mail->attach(
        #'Type'          => 'application/vnd.ms-excel',
        'Type'          => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        'Path'          => $filepath,
        'Filename'      => $filename,
        'Disposition'   => 'attachement',
    );

    $mail->send('sendmail');
}
  

Кто-нибудь, пожалуйста, может помочь мне прикрепить файл xlsx?

Комментарии:

1. Попробуйте 'Data' => "File size:". -s $filepath

2. ‘Данные’ => «Размер файла». -s $ filepath возвращает 0. ls -la возвращает 97403. Также вложение по-прежнему не работает.

3. Итак, $filepath неверен, будь то абсолютный или относительный путь. Также use strict;

Ответ №1:

Вы shift дважды вводите $filename (2-я и 6-я строки), а переменная $filepath не объявлена. Может быть здесь ошибка?

Комментарии:

1. ААаа… Должно быть, рано утром. Спасибо, что помогли мне!

2. Невозможно ли использовать абсолютный путь в «Path => $filepath»

3. При прикреплении файла xlsx мне также пришлось сначала закрыть Excel ::writer. Если я не закрыл его, абсолютный путь не работал.