2015-08-16 2 views
0

Я хотел бы интегрировать следующую команду терминала в сценарий Perl.Perl - Как отправить местную почту?

Terminal команда:

mutt -s "User Monitoring" -a "/home/mipa/Documents/System_Monitoring/protocol_name.csv" -- [email protected] 

Команда посылает локальную почту, содержащую вложенный файл для пользователя в той же системе.

У меня есть небольшая проблема с командой. Кажется, что это требует большего взаимодействия с пользователем, чем просто команда, перечисленная здесь. Команда требует от пользователя следовать меню, чтобы подтвердить значения и нажать клавишу «y» для отправки.

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

Любое руководство относительно возможного решения высоко ценится.

+0

[Email: MIME] (http://search.cpan.org/~rjbs/Email-MIME-1.934/lib/Email/MIME.pm) или для простого использования [Email: Stuffer] (http: //search.cpan.org/~rjbs/Email-Stuffer-0.012/lib/Email/Stuffer.pm). – serenesat

ответ

0
  1. Есть несколько способов отправки сообщений электронной почты из командной строки в Linux: How do I send a file as an email attachment using Linux command line?
  2. почему в вашей команде --? что может смутить mutt.
  3. https://unix.stackexchange.com/questions/108916/automatically-attach-a-file-to-a-mail-with-mutt имеет еще несколько предложений по отправке почты с mutt.
0

Я предпочитаю использовать MIME::Lite для отправки электронных писем, а не порождать внешнюю команду, которая позволяет избежать проблем, которые возникают у вас. MIME :: Lite способен обрабатывать отправку писем с вложениями.

Вот краткий пример:

#!/usr/bin/perl 

use strict; 
use MIME::Lite; 

my $msg = MIME::Lite->new(
    To  => '[email protected]', 
    Subject => 'Test message with attachments', 
    Type => 'multipart/mixed' 
); 

$msg->attach(
    Type  => 'TEXT', 
    Data  => "Here's the file you wanted" 
); 
$msg->attach(
    Type  => 'image/png', 
    Path  => 'somefile.png', 
    Filename => 'somefile.png', 
    Disposition => 'attachment' 
); 

$msg->send(); 

Это пришлет сообщение, содержащее небольшое количество текста и одного вложения.

Есть много примеров, приведенных в POD для MIME::Lite.

+0

FYI, [WAIT! MIME :: Lite не рекомендуется его текущим сопровождающим] (https://metacpan.org/pod/MIME::Lite#WAIT). 'Существует несколько альтернатив, таких как Email: MIME или MIME :: Entity и Email :: Sender, которые вы, вероятно, должны использовать вместо этого. MIME :: Lite продолжает набирать странные отчеты об ошибках и не получает большого количества рефакторинга из-за доступности лучших альтернатив. Пожалуйста, подумайте о том, чтобы использовать что-то еще. ' – serenesat

+0

@serenesat Hmm. Не заметил этого. Это, конечно, очень хорошо работает в случаях использования, но YMMV – harmic

Смежные вопросы