Close

Скрипт для рассылки писем

Привет братья сёстры благослави вас бог всевышний

Присоветуйте плиз проверенный вами скрипт или прогу для рассылки писем
Чтобы рассылка делалась с сервера а не с домашнего компьютера

Скрипт/прога обязательно должен/должна уметь:

— забирать из базы имя адресата и вставлять его в поле Subject
— забирать из базы имя адресата и вставлять его в поле Body

База — это простой txt файл вида:

Цитата:

Вася Пупкин
vasya@pupkin.ru

Маша Курочкина
masha@kurochkina.ru

Петя Бриллиант
petya@brillianta.ru


Сейчас есть такой Perl-овый скриптик но с ним есть мелкие нерешённые косяки (например проблема с кодировкой в поле Subject у некоторых получателей):

PHP код:


#!/usr/bin/perl

$|=1;
*
STDERR=*STDOUT;

$letter='';

$r=open(LET,"letter");
print 
"letter: \$r=$r\n$!\n" if !$r;
$From=<LET>;
$Subj=<LET>;
while(<
LET>) {$letter.=$_}
close LET;

$r=open(ADDR,"addr");
print 
"addr: \$r=$r\n$!\n" if !$r;
$cnt=0;
while(<
ADDR>) {
 
my $em='';
 
$cnt++;
 
s/\s+$//;
 
$name=$_;
 
$em=$cnt.": Имя не найдено\n" if $name eq '';
#print length($name).": $name=\n$em\n"; exit;
 
$fname=(split /\s+/,$name)***91;0***93;;
 
$addr=<ADDR>; $cnt++;
 
$addr=~s/\s+$//;
 
$em.=$cnt.": Адрес не найден\n" if $addr eq '';
 
$em.=$cnt.": Неправильный адрес ***91;$addr***93;\n" if $addr!~/^***91;^@***93;+@***91;^@***93;+$/;
 if(
$em){ print $em; exit }
 
$foo=<ADDR>; $cnt++;
 
my $let=$letter;
 
$let=~s/%%%/$fname/;
 
my $psubj=$Subj;
 
$psubj=~s/%%%/$fname/;

 my $mailprog="/usr/sbin/sendmail";
 
$r=open(MAIL,"|$mailprog -t");
 print 
"sendmail: \$r=$r\n$!\n" if !$r;

 my $letlen=length($let);
 print 
MAIL "To: $name <$addr>\n";
 print 
MAIL "From: $From";
 print 
MAIL "Content-Type: text/plain; charset=UTF-8\n";
 print 
MAIL "Reply-To: $From";
 print 
MAIL "Return-Path: $From";
 print 
MAIL "Subject: $psubj";
 print 
MAIL "Content-Length: $letlen\n";
 print 
MAIL "\n$let";
 
close MAIL;

 print "To: $name <$addr>\n";
 
sleep(6)
}
close ADDR




Источник

Добавить комментарий