23.10.2018, 22:35 [+3 UTC]
в нашей команде: 3 033 чел. | участники онлайн: 6 (рекорд: 21)

:: РЕГИСТРАЦИЯ

:: задать вопрос

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.51 (29.09.2018)

Общие новости:
24.09.2018, 16:49

Форум:
19.10.2018, 12:24

Последний вопрос:
23.10.2018, 20:34

Последний ответ:
23.10.2018, 15:23

Последняя рассылка:
23.10.2018, 22:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
24.09.2010, 09:03 »
Кохан Владимир Иванович
Большое спасибо за ответ. [вопрос № 179999, ответ № 263160]
09.12.2009, 14:44 »
Reactor
Вот Вашего-то ответа я и ждал. Всегда даёте огромное кол-во информации. Пять и ещё раз пять! [вопрос № 174921, ответ № 257487]

РАЗДЕЛ • PHP / Perl / Python

Создание программ на языках PHP, Perl и Python.

[администратор рассылки: Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)]

Лучшие эксперты в этом разделе

Асмик Гаряка
Статус: Советник
Рейтинг: 18
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 14
Хватов Сергей
Статус: Академик
Рейтинг: 2

Перейти к консультации №:
 

Консультация онлайн # 141164
Раздел: • PHP / Perl / Python
Автор вопроса: razrobotki
Отправлена: 01.08.2008, 11:35
Поступило ответов: 0

Здравствуйте дорогие эксперты у меня вот кокая проблема, скачал я скрип для рассылки и подписки но когда я посылаю письма они приходят и не открывается проста в виде файла html и кодировка не cr1251, можно ли сделать чтоб я целиком html страничку вставлял и отправлял со своей кодировкой которая на странички, и чтоб после отправки возвращался на прежнею страничку для отправки, вот сам скрипт:

#!/usr/bin/perl
#
##############################################################################
$mailprog = '/usr/sbin/sendmail';
#  Установите путь до программы sendmail на Вашем сервере.

$admin_email="mail@mail.ru";
#  Смените на Ваш email сохраните знак  перед @

$list_name="QG Kazakhstan новые поступления.";
#  Название Вашей рассылки

$adminpass="111111";
#  Административный пароль. Советуем поменять.

$sendto="1";
#  Если значение этой переменной 1 то Вы будете получать письмо по электронной
#  почте когда кто либо подписывается или отказывается от рассыки.
#  Если значение 0 таких писем не будет.

$temp="1";
#  Значение 1 - новый участник должен будет подтверждать подписку
#  нажимая ссылку в специально посланном ему для этой цели письме.
#  Значение 0 участник будет добавлен в список без подтверждения 

$remove_notice="0";
#  Поставьте значение 1 если хотите дать возможность подписчикам отказаться 
#  от рассылки прямо из письма. В каждом письме рассылки будет ссылка пройдя по которой 
#  пользователь удалит свой адрес из списка.

$html = "1"; 
#  Значение 1 HTML версия рассылки, 0 текстовая версия.

$file = "addresses.txt";
#  Файл в котором хранятся все адреса подписчиков. Лучше переименовать его для безопасности.

@bannedaddresses = ('john@johndoe.com','joe@joedoe.com');
#  Адреса которые не смогут добавить себя в список рассылки (банлист)

$lock = "2";
#  оставьте значение 2 если сервер позволяет использовать
#  блокировку файла. Иначе удалите эту строчку.

@months = ('Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь');
@days = ('Воскресенье','Понедельник','Вторник','Среда','Четверг','Пятница','Суббота');
($mday,$mon,$year,$wday) = (localtime(time))[3,4,5,6];
$year += 1900;	
$date = "$months[$mon] $mday, $year";
# URL Вашего сайта без HTTP://
$url = 'www.freyn.agava.ru';
$script_url = $ENV{'SCRIPT_NAME'};

print "Content-type:text/html";

✓

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) 
	{
   ($name, $value) = split(/=/, $pair);
   $value =~ tr/+/ /;
   $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$in{$name} = $value;
	}

if ($in{'action'} eq "Подписать") {&subscribe}
if ($in{'action'} eq "Удалить") {&unsubscribe}
if ($in{'action'} eq "Отправить") {&send}
if ($in{'action'} eq "Загрузить") {&load}
if ($in{'adminpass'} ne "$adminpass") {&adminerror}
if ($in{'adminpass'} eq "$adminpass") {&adminform}

exit;

sub check
{
open(LIST,"$file");
if ($lock){ 
flock(LIST, $lock);
}
@addresses=<LIST>;
close(LIST);

foreach $member(@addresses)
	{
	chomp($member);
	$in{'address'} = "$ENV{'QUERY_STRING'}";
	if ($in{'address'} eq $member){&unsubscribe}
	}
	
open(LIST,"temp.txt");
if ($lock){ 
flock(LIST, $lock);
}
@addresses=<LIST>;
close(LIST);

foreach $tempmember(@addresses)
	{
	chomp($tempmember);
	$in{'address'} = "$ENV{'QUERY_STRING'}";
	if ($in{'address'} eq $tempmember){&subscribetemp}
	}	

if("admin" eq $ENV{'QUERY_STRING'}){
&admin
}	
}

sub subscribe
{
open(LIST,"$file");
if ($lock){ 
flock(LIST, $lock);
}
@addresses=<LIST>;
close(LIST);
if ($in{'address'}!~ /.*@.*..*/){&bademail}

foreach $bannedaddress(@bannedaddresses)
	{
    if ($in{'address'} eq $bannedaddress){&banned_message}
	}

foreach $member(@addresses)
	{
	chomp($member);
	if ($in{'address'} eq $member){&already_subscribed}
	}

if ($temp eq "1") {
push (@addresses,$in{'address'});
open(LIST,">>temp.txt");
if ($lock){ 
flock(LIST, $lock);
}
print LIST "$in{'address'}";
close(LIST);
$message="Адрес электронной почты <font color=red>$in{'address'}</font> добавлен в список адресов ожидающих подтверждения.  
Пожалуйста подтвердите Ваше желание получать почтовую рассылку $list_name . Для подтверждения подписки Вам надо щёлкнуть по 
ссылке в письме которое мы Вам только что отправили. Письмо должно Вам прийти через несколько минут.";
&mailtemp;
&message;
exit;
}
else {	
push (@addresses,$in{'address'});
open(LIST,">>$file");
if ($lock){ 
flock(LIST, $lock);
}
print LIST "$in{'address'}";
close(LIST);
$message="Этот e-mail адрес <font color=red>$in{'address'}</font> Успешно подписан на рассылку $list_name.";
&mailadd;
&message;
exit;
}
}

sub subscribetemp
{
open(LIST,"$file");
if ($lock){ 
flock(LIST, $lock);
}
@addresses=<LIST>;
close(LIST);
if ($in{'address'}!~ /.*@.*..*/){&bademail}

foreach $bannedaddress(@bannedaddresses)
	{
    if ($in{'address'} eq $bannedaddress){&banned_message}
	}

push (@addresses,$in{'address'});
open(LIST,">>$file");
if ($lock){ 
flock(LIST, $lock);
}
print LIST "$in{'address'}";
close(LIST);
$message="Этот e-mail адрес <font color=red>$in{'address'}</font> был удалён из списка адресов ожидающих подтверждения подписки и
 добавлен в список постоянных подписчиков на рассылку $list_name.";
&mailadd;
&message;
&unsubscribetemp;
exit;
}

sub bademail
{
$message="Похоже что Вы указали не совсем правильный e-mail адрес.  Пожалуйста вернитесь назад и попробуйте ещё раз.  Если 
программа не позволяет добавить Ваш e-mail адрес напишите на e-mail <a href=mailto:$admin_email> $admin_email</a> and I'll и ваш адрес 
будет добавлен в рассылку вручную.  Извините за доставленные неудобства.";
&message;
exit;
}

sub banned_message
{
$message="Жаль, но Ваш адрес <font color=red>$in{'address'}</font> по каким то причинам был добавлен в чёрный список, и Вы не имеете
 право подписаться на данную рассылку.";
&message;
exit;
}

sub already_subscribed
{
$message="Этот адрес <font color=red>$in{'address'}</font> уже подписан на 
рассылку!";&message;
exit;
}

sub unsubscribe
{
open(LIST,"$file");
if ($lock){ 
flock(LIST, $lock);
}
@addresses=<LIST>;
close(LIST);$x=0;
foreach $member(@addresses)
	{
	&clean;
	if ($in{'address'} eq $member){&deletemember}
	$x++;
	}
¬_found;
}

sub unsubscribetemp
{
open(LIST,"temp.txt");
if ($lock){ 
flock(LIST, $lock);
}
@addresses=<LIST>;
close(LIST);$x=0;
foreach $member(@addresses)
	{
	&clean;
	if ($in{'address'} eq $member){@addresses[$x]="";
open(LIST,">temp.txt");
if ($lock){ 
flock(LIST, $lock);
}
foreach $member(@addresses)
	{
	&clean;
	unless($member eq "")
		{print LIST "$member";}
	}}
	$x++;
	}
exit;
}

sub adminerror
{
$message="Похоже Вы не имеете прав администратора в данной рассылке, или просто ошиблись вводя свой пароль. Вернитесь назад и попробуйте ещё раз.";
&message;
exit;
}

sub admin
{
$message="<form action=mailmachine.cgi method=post> Пароль:  <input type=password name=adminpass><BR><BR><input type=submit value=Ввести><input type=reset value=Очистить></FORM>";
&message;
exit;
}

sub clean
{
chomp($member);
$member=~ s/^s+//;
$member=~ s/s+$//;
}

sub not_found
{
$message="Адрес <font color=red>$in{'address'}</font>
не может быть удалён и з рассылки так как он на неё и не подписан!";
&message;
exit;
}

sub deletemember
{
@addresses[$x]="";
open(LIST,">$file");
if ($lock){ 
flock(LIST, $lock);
}
foreach $member(@addresses)
	{
	&clean;
	unless($member eq "")
		{print LIST "$member";}
	}
$message="<font color=red>$in{'address'}</font> Был успешно удален из рассылки $list_name.";
&mailun;
&message;
exit;
}

sub mailadd{
   open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!";
   print MAIL "From: $admin_email";
   print MAIL "To: $in{'address'}";
   print MAIL "Subject: Подтверждение подписки!";
   print MAIL <<to_the_end;
Это письмо просто подтверждает подписку на рассылку $list_name.



to_the_end

  close (MAIL);

if ($sendto eq "1") {
open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!";
   print MAIL "From: $admin_email";
   print MAIL "To: $admin_email";
   print MAIL "Subject: Подтверждение подписки";
   print MAIL <<to_the_end;
$in{'address'} был подписан на рассылку $list_name.

to_the_end

  close (MAIL);
}
}

sub mailtemp{
   open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!";
   print MAIL "From: $admin_email";
   print MAIL "To: $in{'address'}";
   print MAIL "Subject: Подтверждение подписки";
   print MAIL <<to_the_end;
Для того что бы подтвердить подписку на почтовую рассылку $list_name  Вы должны нажать на ссылку расположенную внизу этого письма. 
Повторное нажатие на эту же ссылку удалит Ваш адрес из списка рассылки.  Если Вы не подписывались на нашу рассылку это значит что 
кто то с IP адресом $ENV{'REMOTE_ADDR'} пытался сделать это за Вас. В этом случае Вам не надо нажимать на нижеприведённую ссылку и 
больше никаких писем от нас Вы получать не будете.

http://$url$script_url?$in{'address'}



to_the_end

  close (MAIL); 
}

sub mailun{
   open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!";
   print MAIL "From: $admin_email";
   print MAIL "To: $in{'address'}";
   print MAIL "Subject: Вы удалены из рассылки!";
   print MAIL <<to_the_end;
Вы были удалены из списка рассылки $list_name. Если Вы захотите заново подписаться на нашу рассылку
можете сделать это в любое время с нашего сайта.



to_the_end


Приложение:

Редактировние
--------

• Отредактировал: [неизвестный]
• Дата редактирования: 01.08.2008, 15:34

Состояние: Консультация закрыта

Oтветов пока не поступило.

Мини-форум консультации № 141164

Посетитель

ID: 16594

# 1

= общий = | 01.08.2008, 12:10 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер

можно :)
при беглом взгляде все и так должно работать..

но ИМХО легче написать заново чем ковырять никак не комментированный скрипт

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.14747 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.51 от 29.09.2018