Скрипт на perl слушает сокет, получает текстовую информацию, с определенной переодичностью, и тут-же полученое отправляет через sendmail на определенную групу адресеов. Вопрос состоит в том как перет отправкой через sendmail отредактировать содержимое будующего письма на лету и собственно уже отправить новый вариант?
Прилагаю скрипт
#!/usr/bin/perl -w
use strict;
use IO::Socket;
my($server, $newmsg, $max_len, $server_port, $cmd_mail, $to_email, $subject,);
$max_len = 900;
$server_port = 50001;
$cmd_mail = "/usr/sbin/sendmail -t";
$to_email = "user\@mail";
$subject = "State warn!";
$server = IO::Socket::INET->new(LocalPort=>$server_port, Broadcast=>0, Proto=>"udp")
or die "Error starting UDP Server on port $server_port: $@\n";
print "UDP Server started on port $server_port\n";
$newmsg = "";
while($server->recv($newmsg,$max_len)){
if($newmsg){
my($port, $ipaddr) = sockaddr_in($server->peername);
$ipaddr = 127.0.0.1;
print "Received: $newmsg \n";
open (SENDMAIL, "|$cmd_mail") || die "ERROR: Can not run sendmail";
print SENDMAIL "MIME-Version: 1.0\n";
print SENDMAIL "Content-Type: text/plain; charset=\"utf8\"\n";
print SENDMAIL "Content-Transfer-Encoding: 8bit\n";
print SENDMAIL "To: $to_email\n";
print SENDMAIL "Subject: $subject\n\n";
print SENDMAIL $newmsg . "\n";
close (SENDMAIL)
}
}
die "recv: $!";