Perl - 如何发送本地邮件?

时间:2015-08-16 17:05:10

标签: linux perl mutt

我想将以下终端命令集成到 Perl 脚本中。

终端命令:

mutt -s "User Monitoring" -a "/home/mipa/Documents/System_Monitoring/protocol_name.csv" -- mipa@localhost.localdomain

该命令将包含文件附件的本地邮件发送给同一系统上的用户。

虽然我的命令有一个小问题。它似乎需要更多的用户交互,而不仅仅是这里列出的命令。该命令要求用户按照菜单确认值并点击“y”键发送。

我的问题是双重折叠的。是否有一个类似的邮件命令,不需要用户交互,只需遵循预定义标志的单个命令即可工作?我如何将此命令集成到 Perl 脚本中,在那里我可以选择文件名,然后接收用户发出命令?

高度赞赏任何有关可能解决方案的指导。

2 个答案:

答案 0 :(得分: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发送邮件的建议。

答案 1 :(得分:0)

我更喜欢使用MIME::Lite来发送电子邮件,而不是产生外部命令,从而避免了您遇到的问题。 MIME :: Lite能够处理带附件的电子邮件。

这是一个简单的例子:

#!/usr/bin/perl

use strict;
use MIME::Lite;

my $msg = MIME::Lite->new(
    To      => 'foo.bar@foobar.com',
    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();

这会发送包含少量文字和单个附件的邮件。

MIME::Lite的POD中提供了更多示例。