Вот выкидываю код самой страницы рассылки.
<?
session_start();
require_once('../inc/global_var.php');
require_once('../inc/connect.php');
require('check_session.php');
require('../inc/lib.php');
$ds_arr = mysql_fetch_array(mysql_query('select count(distinct(t.em)) as cr from
(select email as em from object where email<>\'\'
union all
select email as em from job_list where email<>\'\'
union all
select from_email as em from send_message where from_email<>\'\'
) as t where t.em not in (SELECT email FROM send_ignore_list_email)'));
$count_all_email=$ds_arr['cr'];
//================================================================================================== ===================
if (isset($_POST['add_email']))//добавляем новые email адреса
{
$arr_em=explode("\r\n",$_POST['add_email']);
foreach($arr_em as $str_em)
{
//echo $str_em.'<br>';
$str_em=trim($str_em);
if ($str_em!='') mysql_query("insert into send_message (from_email) value ('".$str_em."')");
$i++;
}
header("Location: send_to_all_email.php?add_email=".$i);
}
//================================================================================================== ===================
if (isset($_GET['test_id']))//делаем тестовую рассылку на порталовский адрес
{
$ds_arr=mysql_fetch_array(mysql_query("select * from send_to_all_mess where id=".$_GET['test_id']));
$msg_text = $ds_arr['text_message'];
$to_email='info@krasnodar-today.ru';
if ($ds_arr['unsubscribe']=='yes') $msg_text=$msg_text.'<br><br><br><br><p align="center" style="font-style:italic">
Если Вы хотите отказаться от получения этой рассылки, нажмите <a href="http://'.$g_domain.'/unsubscribe.php?email='.$to_email.'">здесь</a></p>';
$b = mail_($ds_arr['from_address'],$to_email,$ds_arr['subject'],$msg_text);
if ($b)
header("Location: send_to_all_email.php?test_send_email=success");
else
header("Location: send_to_all_email.php?test_send_email=falue");
}
//================================================================================================== ===================
if (isset($_GET['del_id']))//удаляем рассылку
{
mysql_query("delete from send_to_all_mess where id=".$_GET['del_id']);
mysql_query("delete from send_list_email where id_subscribe=".$_GET['del_id']);
header("Location: send_to_all_email.php");
}
//================================================================================================== ===================
if (isset($_POST['save_edit'])) // сохраним письмо после его изменения
{
$body=str_replace("\r\n","",$_POST['FCKeditor1']);
$body=str_replace("\n","",$body);
$body=str_replace("'","\"",$body);
$body=str_replace("\"/news_files/","\"http://".$g_domain."/news_files/",$body);//для рассылок заменяем относительный путь на полный
if (isset($_POST['unsubscribe'])) $unsubscribe='yes'; else $unsubscribe='no';
$sql_str = "update send_to_all_mess set from_address='".$_POST['from_address']."',subject='".$_POST['subject']."',
text_message='".$body."',status_='".$_POST['status_']."',unsubscribe='".$unsubscribe."' where id=".$_POST['edit_id'];
//echo $sql_str;
mysql_query($sql_str) or die(mysql_error());
header("Location: send_to_all_email.php");
}
//================================================================================================== ===================
if (isset($_POST['add_ignore_email'])) // добавим email в список исключений
{
$sql_str = "INSERT INTO send_ignore_list_email (email) values ('".$_POST['ignore_email']."')";
mysql_query($sql_str) or die(mysql_error());
header("Location: send_to_all_email.php?ignore_list_email");
}
//================================================================================================== ===================
if (isset($_GET['del_ignore_email'])) // удалим email из списка исключений
{
$sql_str = "delete from send_ignore_list_email where email='".$_GET['del_ignore_email']."'";
mysql_query($sql_str) or die(mysql_error());
header("Location: send_to_all_email.php?ignore_list_email");
}
//============================ГЕНЕРАЦИЯ НОВОСТНОЙ РАССЫЛКИ===============================================================
if (isset($_POST['save_add_news'])) // сформируем и сохраним письмо после его добавления
{
$body='<style type="text/css">
p, span, strong, b, div, a {font-family:tahoma;font-size:12px;}
a { text-decoration: underline; color: rgb(8, 87, 166); }
a:hover { text-decoration: none; }
#brd {border: 1px dotted rgb(204, 204, 204);}
</style>
<p>Новости '.$g_gorod_2.' от '.date("d.m.Y").'</p><br>
<a href="http://'.$g_domain.'"><img height="47" border="0" width="280" alt="" src="http://'.$g_domain.'/img/'.$g_gorod_4.'_logo_email.jpg" /></a>
<br><br><br>
<table cellspacing="5" cellpadding="5" width="100%" id="brd">
<tbody>';
$arr=explode("|", $_POST['sel_id_news']);
$n=1;
for ($i=0;$i<count($arr)-1;$i++)
{
$ds_arr = mysql_fetch_assoc(mysql_query("SELECT * FROM news_list where id_news=".$arr[$i]));
if ($n==1) {$body.='<tr>';}
$body.='<td width="50%" valign="top" id="brd">
<a target="_blank" href="http://'.$g_domain.'/news/news_full.php?id_news='.$ds_arr['id_news'].'">
<img border="0" src="http://'.$g_domain.'/news/news_files/image_pict/'.$ds_arr['id_news'].'.jpg" /><br><br>
<b>'.str_replace("'","\"",$ds_arr['caption_news']).'</b>
</a><br><br>
</td>';
$n++;
if ($n==3) {$body.='</tr>';$n=1;}
}
$body.='</tbody></table><br>
<p>С уважением, Администрация городского портала <a href="http://'.$g_domain.'">http://'.$g_domain.'/</a><br />
г. '.$g_gorod_1.'<br />
info@krasnodar-today.ru</p>';
if (isset($_POST['unsubscribe'])) $unsubscribe='yes'; else $unsubscribe='no';
$sql_str = "INSERT INTO send_to_all_mess(date_create,from_address,subject,text_message,count_email,status_,unsubscribe)
VALUES (NOW(),
'".$_POST['from_address']."',
'".$_POST['subject']."',
'".$body."',
".$count_all_email.",
'".$_POST['status_']."',
'".$unsubscribe."')";
//echo $sql_str;
mysql_query($sql_str) or die(mysql_error());
$insert_id=mysql_insert_id();
$sql_str = "INSERT INTO send_list_email(email,id_subscribe)
select distinct(t.em),".$insert_id." from
(select email as em from object where email<>''
union all
select email as em from job_list where email<>''
union all
select from_email as em from send_message where from_email<>''
) as t where t.em not in (SELECT email FROM send_ignore_list_email)";
mysql_query($sql_str) or die(mysql_error());
header("Location: send_to_all_email.php");
}
//================================================================================================== ===================
if (isset($_POST['save_add'])) // сохраним письмо после его добавления
{
$body=str_replace("\r\n","",$_POST['FCKeditor1']);
$body=str_replace("\n","",$body);
$body=str_replace("'","\"",$body);
$body=str_replace("\"/news_files/","\"http://".$g_domain."/news_files/",$body);//для рассылок заменяем относительный путь на полный
$body='<style>p,span,strong,b,div,a {font-family:tahoma; font-size:12px;} A{text-decoration: underline;color: #0857A6; }
A:hover {text-decoration: none;}</style>'.$body;
if (isset($_POST['unsubscribe'])) $unsubscribe='yes'; else $unsubscribe='no';
$sql_str = "INSERT INTO send_to_all_mess(date_create,from_address,subject,text_message,count_email,status_,unsubscribe)
VALUES (NOW(),
'".$_POST['from_address']."',
'".$_POST['subject']."',
'".$body."',
".$count_all_email.",
'".$_POST['status_']."',
'".$unsubscribe."')";
//echo $sql_str;
mysql_query($sql_str) or die(mysql_error());
$insert_id=mysql_insert_id();
$sql_str = "INSERT INTO send_list_email(email,id_subscribe)
select distinct(t.em),".$insert_id." from
(select email as em from object where email<>''
union all
select email as em from job_list where email<>''
union all
select from_email as em from send_message where from_email<>''
) as t where t.em not in (SELECT email FROM send_ignore_list_email)";
mysql_query($sql_str) or die(mysql_error());
header("Location: send_to_all_email.php");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Массовая рассылка email всем пользователям</TITLE>
<META http-equiv=content-type content="text/html; charset=windows-1251">
<link rel="stylesheet" href="../style.css" type="text/css">
</HEAD>
<style>
.head_vip
{
border-bottom:1px solid #E0E0E0;
font-size:10px;
}
</style>
<script type="text/javascript" src="fckeditor/fckeditor.js"></script>
<script type="text/javascript" src="../inc/JsHttpRequest/JsHttpRequest.js"></script>
<script language="javascript">
function check_data()
{
subject=form1.subject.value;
from_address=form1.from_address.value;
if (subject=='') {alert('Тема должна быть заполнена!'); return false;}
if (from_address=='') {alert('Адрес отправителя должен быть заполнен!'); return false;}
}
function check_data_news()
{
subject=form1.subject.value;
from_address=form1.from_address.value;
if (subject=='') {alert('Тема должна быть заполнена!'); return false;}
if (from_address=='') {alert('Адрес отправителя должен быть заполнен!'); return false;}
sel_id=document.getElementById('sel_id_news').value;
if (sel_id=='')
{
alert('Не выбрана ни одна новость!'); return false;
}
else
{
pattern='|';
var pos = sel_id.indexOf(pattern);
for (var count = 0; pos != -1; count++)
pos = sel_id.indexOf(pattern, pos + pattern.length);
if ((count%2)==1) {alert('Количество отобранных новостей должно быть четным!'); return false;}
}
}
</script>
<BODY leftMargin="0" topMargin="0" marginheight="0" marginwidth="0">
<TABLE height="100%" cellSpacing=0 cellPadding=0 width="100%" border="0" class="admin_color1">
<TBODY>
<TR><TD><? require ('admin_head.php'); ?></TD></TR>
<TR height="100%">
<TD width="100%" valign="top">
<TABLE cellSpacing="0" cellPadding="0" width="100%">
<TBODY><TR>
<TD valign=top height="100%"><? require ('admin_menu.php'); ?></TD>
<TD class="admin_td" valign=top width="100%" height="100%" >
<?
if (isset($_GET['edit_id']))//покажем форму редактирования письма
{
$ds = mysql_query ("SELECT * FROM send_to_all_mess where id=".$_GET['edit_id']) or die(mysql_error());
$ds_arr = mysql_fetch_assoc($ds);
?>
<form action="send_to_all_email.php" method="POST" style="margin:0px;" name="form1" onSubmit="return check_data();">
<span style="font-size:12px;font-weight:bold; color:#000099;"><img src="../img/edit.png" align="absmiddle"> Редактирование письма рассылки</span>
<a href="send_to_all_email.php" style="font-size:12px;">Вернуться к списку писем рассылки</a>
<br><br>
<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr><td width="100">Адрес отправителя</td>
<td><input type="text" name="from_address" maxlength="100" style="width:200px;" title="Адрес отправителя" value="<? echo $ds_arr['from_address'];?>">
<input type="checkbox" name="unsubscribe" <? if ($ds_arr['unsubscribe']=='yes') echo 'checked="checked"';?>>Позволить адресату отписаться от рассылки</td>
</tr>
<tr><td width="100">Тема сообщения</td>
<td><input type="text" name="subject" maxlength="300" style="width:100%" title="Тема" value="<? echo $ds_arr['subject'];?>"></td>
</tr>
<tr><td colspan="2">
<script type="text/javascript">
var sBasePath = 'http://<? echo $g_domain; ?>/admin/fckeditor/';
var oFCKeditor = new FCKeditor( 'FCKeditor1' );
oFCKeditor.BasePath = sBasePath ;
oFCKeditor.Height = 600 ;
oFCKeditor.Value = '<? $body=str_replace("\r\n","",$ds_arr['text_message']);$body=str_replace("\n","",$body);$body=str_replace("'","\"",$body);echo $body;?> ';
oFCKeditor.Create() ;
</script>
</td></tr>
<tr><td>Статус рассылки</td>
<td><select name="status_" size="1" title="Статус">
<option value="stop" <? if ( $ds_arr['status_']=='stop') echo 'selected="selected"';?>>Остановлено</option>
<option value="run" <? if ( $ds_arr['status_']=='run') echo 'selected="selected"'; if ( $ds_arr['status_']=='end') echo 'disabled="disabled"';?> >Выполняется</option>
<option value="end" <? if ( $ds_arr['status_']=='end') echo 'selected="selected"';?> disabled="disabled">Завершено</option>
</select>
</td>
</tr>
</table>
<br>
<input type="hidden" name="edit_id" value="<? echo $_GET['edit_id'];?>">
<input type="submit" class="submit" name="save_edit" value="Изменить">
<input type="submit" class="submit" name="cancel" value="Отмена"/>
</form>
<?
}
else if (isset($_GET['add_news']))//покажем форму для довления рассылки новостей
{
?>
<form action="send_to_all_email.php" method="POST" style="margin:0px;" name="form1" onSubmit="return check_data_news();">
<span style="font-size:12px;font-weight:bold; color:#000099;"><img src="../img/add.png" align="absmiddle"> Добавление письма рассылки новостей</span>
<a href="send_to_all_email.php" style="font-size:12px;">Вернуться к списку писем рассылки</a>
<br><br>
<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr><td width="100">Адрес отправителя</td>
<td><input type="text" name="from_address" maxlength="100" style="width:200px;" title="Адрес отправителя" value="<? echo $g_domain; ?>">
<input type="checkbox" name="unsubscribe" checked="checked">Позволить адресату отписаться от рассылки</td>
</tr>
<tr><td width="100">Тема сообщения</td>
<td><input type="text" name="subject" maxlength="300" style="width:100%" title="Тема" value="Главные новости недели <? echo $g_gorod_2;?> от <? echo date("d.m.Y");?>"></td>
</tr>
<tr><td colspan="2" style="color:#D9090E;font-size:11px;font-weight:bold;">В письме будет указана сегодняшняя дата рассылки! Изменить ее можно в режиме редактирования</td></tr>
<tr><td colspan="2">
<table cellpadding="0" cellspacing="0" border="0" id="rn">
<tr>
<td width="50%"><span id="sn">Выбранные новости для рассылки <span id="count_sel_news"></span></span></td>
<td width="10"> </td>
<td width="50%"><span id="an">Все новости</span></td>
</tr>
<tr>
<td id="news_sel" valign="top"> </td>
<td width="10"> </td>
<td id="news_all" valign="top"><script language="javascript">getallnews(0,0);</script></td>
</tr>
</table>
<input type="hidden" value="" name="sel_id_news" id="sel_id_news">
</td></tr>
<tr><td>Статус рассылки</td>
<td><select name="status_" size="1" title="Статус">
<option value="stop" selected="selected">Не выполняется</option>
<option value="run">Выполняется</option>
</select>
</td>
</tr>
</table>
<br>
<input type="submit" class="submit" name="save_add_news" value="Добавить">
<input type="submit" class="submit" name="cancel" value="Отмена"/>
</form>
<?
}
else if (isset($_GET['add']))//покажем форму добавления письма
{
?>
<form action="send_to_all_email.php" method="POST" style="margin:0px;" name="form1" onSubmit="return check_data();">
<span style="font-size:12px;font-weight:bold; color:#000099;"><img src="../img/add.png" align="absmiddle"> Добавление письма рассылки</span>
<a href="send_to_all_email.php" style="font-size:12px;">Вернуться к списку писем рассылки</a>
<br><br>
<table width="100%" border="0" cellpadding="2" cellspacing="0">
<tr><td width="100">Адрес отправителя</td>
<td><input type="text" name="from_address" maxlength="100" style="width:200px;" title="Адрес отправителя" value="<? echo $g_domain; ?>">
<input type="checkbox" name="unsubscribe" checked="checked">Позволить адресату отписаться от рассылки</td>
</tr>
<tr><td width="100">Тема сообщения</td>
<td><input type="text" name="subject" maxlength="300" style="width:100%" title="Тема"></td>
</tr>
<tr><td colspan="2">
<script type="text/javascript">
var sBasePath = 'http://<? echo $g_domain; ?>/admin/fckeditor/';
var oFCKeditor = new FCKeditor( 'FCKeditor1' );
oFCKeditor.BasePath = sBasePath ;
oFCKeditor.Height = 600 ;
oFCKeditor.Value = '';
oFCKeditor.Create() ;
</script>
</td></tr>
<tr><td>Статус рассылки</td>
<td><select name="status_" size="1" title="Статус">
<option value="stop" selected="selected">Остановлено</option>
<option value="run">Выполняется</option>
</select>
</td>
</tr>
</table>
<br>
<input type="submit" class="submit" name="save_add" value="Добавить">
<input type="submit" class="submit" name="cancel" value="Отмена"/>
</form>
<?
}
else if (isset($_GET['ignore_list_email']))//покажем список исключенных email
{
?>
<span style="font-size:12px;font-weight:bold; color:#000099;"><img src="../img/ignore.png" align="absmiddle"> Cписок исключенных из рассылки email</span>
<a href="send_to_all_email.php" style="font-size:12px;">Вернуться к списку писем рассылки</a>
<br><br>
<table width="100%" border="0" cellspacing="2" cellpadding="1" class="GroupBox">
<tr><td>
<span style="font-size:9px;color:#FF0000">Эти исключения будут работать только для новых рассылок, для уже созданных/запущеных работать не будет!</span>
</td>
</tr>
<tr><td>
<form name="form" method="POST" action="send_to_all_email.php">
введите email<br><input name="ignore_email" type="text" size="47" maxlength="30">
<input type="submit" name="add_ignore_email" value="Добавить" class="submit">
</form>
</td><tr>
</table>
<br>
<?
$ds = mysql_query ("SELECT email FROM send_ignore_list_email order by email");
$cr=mysql_num_rows($ds);
echo '<b>Всего исключенных: '.$cr.'</b><br><br>';
while ($ds_arr = mysql_fetch_array($ds))
{
echo '<a href="send_to_all_email.php?del_ignore_email='.$ds_arr['email'].'"><img hspace="2" src="../img/del.png" border="0"></a> '.$ds_arr['email'].'<br>';
}
}
else //выводим список писем для рассылки
{
if (isset($_GET['test_send_email']))
if ($_GET['test_send_email']=='success')
echo '<p class="warning">Тестовое письмо успешно отправлено!</p>';
else
echo '<p class="warning">Тестовое письмо не удалось отправить!</p>';
if (isset($_GET['add_email'])) echo '<p class="warning">Добавлено '.$_GET['add_email'].' email адресов!</p>';
echo '<p class="warning">'.$err.'</p>'; ?>
<b>Кол-во email адресов для рассылки: <? echo $count_all_email;?></b>
<div style="float:left; padding:5px;"><img hspace="2" src="../img/add.png" border="0"><a href="send_to_all_email.php?add_news">Создать рассылку новостей</a></div>
<div style="float:left; padding:5px;"><img hspace="2" src="../img/add.png" border="0"><a href="send_to_all_email.php?add">Создать рассылку общую</a></div>
<div style="float:left; padding:5px;"><img hspace="2" src="../img/ignore.png" border="0"><a href="send_to_all_email.php?ignore_list_email">Список исключеных email</a></div>
<div style="float:left; padding:5px;"><img hspace="2" src="../img/add_email.gif" border="0"><a href="#" onClick="document.getElementById('div_add_email').style.display='block';return false;">Добавить в базу email адреса</a></div>
<div id="div_add_email" style="display:none;position:absolute; top:42px; left:689px; background-color:#EFD5FB; border:3px solid #B99AC8; width:300px; height:590px; padding:5px;">
<img hspace="2" src="../img/add_email.gif" border="0">Добавить в базу email адреса<br><br>
<b style="color:#D52500">* каждый email должен быть на новой строке<br>* не должно быть лишних символов</b>
<form style="margin:0px;" method="post">
<textarea name="add_email" style="width:100%; height:500px; padding:3px;"></textarea><br><br>
<input type="submit" name="add_email_btn" class="submit" value="Добавить">
<input type="button" class="submit" value="Отмена" onClick="document.getElementById('div_add_email').style.display='none';">
</form>
</div>
<br><br><br><br>
<?
$field_sort='date_create'; $sort_dir='desc'; $sd='asc';
if (isset($_GET['asc'])) {$field_sort=$_GET['asc']; $sort_dir='asc'; $sd='desc';}
if (isset($_GET['desc'])) {$field_sort=$_GET['desc']; $sort_dir='desc';$sd='asc';}
$obj_count_all=$cur_count;
$obj_count_on_page=30;
$page_count=ceil($obj_count_all/$obj_count_on_page);
if (is_num($_GET['page'],1) && ($_GET['page']<=$page_count)) $page=$_GET['page']; else $page=1;
if ($page>1) $start_row=($page*$obj_count_on_page)-$obj_count_on_page; else $start_row=0;
$ds = mysql_query ("select id,date_create,date_end,text_message,subject,concat(count_email,'/',count_send_email) as sended,
case status_ when 'run' then 'Выполняется' when 'end' then 'Завершено' else 'Остановлено' end as status
from send_to_all_mess ORDER BY ".$field_sort." ".$sort_dir." limit ".$start_row.",".$obj_count_on_page);
$cr = mysql_num_rows ($ds);
if ($cr==0) echo "<br><b>Нет записей</b>";
if ($cr>0)
{
?>
<div style="font-size:8px;">
<table cellpadding="2" cellspacing="0" width="100%" style="border: 1px solid #E0E0E0;">
<tr class="admin_color2">
<td class="head_vip" width="10">Операции</td>
<td class="head_vip" width="90"><a href="send_to_all_email.php?<? if ($field_sort=='date_create') echo $sd;else echo 'asc';?>=date_create">Дата создания</a></td>
<td class="head_vip" width="90"><a href="send_to_all_email.php?<? if ($field_sort=='date_end') echo $sd;else echo 'asc';?>=date_end">Дата завершения</a></td>
<td class="head_vip"><a href="send_to_all_email.php?<? if ($field_sort=='subject') echo $sd;else echo 'asc';?>=subject">Тема</a></td>
<td class="head_vip" width="150"><a href="send_to_all_email.php?<? if ($field_sort=='sended') echo $sd;else echo 'asc';?>=sended">Всего email/отправленных email</a></td>
<td class="head_vip" width="20"><a href="send_to_all_email.php?<? if ($field_sort=='status') echo $sd;else echo 'asc';?>=status">Статус</a></td>
</tr>
<?
$i=1;
while ($ds_arr = mysql_fetch_array($ds))
{
if ($i<$cr) $st='style="border-bottom:1px dashed #E0E0E0;font-size:10px;"'; else $st='style="font-size:10px;"';
echo '<tr>';
echo '<td '.$st.' valign="top">';
echo '<a href="send_to_all_email.php?test_id='.$ds_arr['id'].'" title="Сделать тест, отправить письмо на info@krasnodar-today.ru"><img hspace="2" src="../img/sendemail.gif" border="0"></a>';
echo '<a href="send_to_all_email.php?edit_id='.$ds_arr['id'].'" title="Редактировать письмо"><img hspace="2" src="../img/edit.png" border="0"></a>';
echo '<a href="send_to_all_email.php?del_id='.$ds_arr['id'].'" title="Удалить письмо" onClick="return confirm(\'Вы уверены?\');"><img hspace="2" src="../img/del.png" border="0"></a>';
echo '</td>';
echo '<td '.$st.' valign="top">'.date("d.m.y H:i:s", strtotime($ds_arr['date_create'])).'</td>';
if ($ds_arr['date_end']!='') $de=date("d.m.y H:i:s", strtotime($ds_arr['date_end'])); else $de='';
echo '<td '.$st.' valign="top">'.$de.'</td>';
echo '<td '.$st.' valign="top">'.$ds_arr['subject'].'</td>';
echo '<td '.$st.' valign="top">'.$ds_arr['sended'].'</td>';
echo '<td '.$st.' valign="top">'.$ds_arr['status'].'</td>';
echo '</tr>';
$i++;
}
?>
</table>
</div>
<?
if ($obj_count_all>$obj_count_on_page) //выводим страницы
{
echo '<table width="100%" cellpadding="2" cellspacing="0"><tr><td class="number_pages" align="center">';
$last_page=(ceil($page/10))*10;
$first_page=$last_page-9;
echo 'страницы ';
if ($page_count<=$last_page) $last_page=$page_count;
if ($page>10) echo '<a href="send_to_all_email.php?page='.($first_page-1).'" '.$font_style.'><<</a> ';
for ($i=$first_page;$i<=$last_page;$i++)
{
if ($i==$page) $font_style=' style="background-color:#FFD493;"'; else $font_style='';
echo '<a href="send_to_all_email.php?page='.$i.'" '.$font_style.'>'.$i.'</a> ';
}
if($page_count>$last_page) echo'<a href="send_to_all_email.php?page='.($last_page+1).'">>></a>';
echo'</td></tr></table>';
}
}
}
?>
</TD>
</TR></TBODY></TABLE></TD>
</TR>
</TBODY>
</TABLE>
</BODY>
</HTML>
А вот свзь с Phpmailer
[code]
function mail_($From, $to, $subject, $body)
{
require_once('class.phpmailer.php');
$mailer = new PHPMailer;
$mailer->SetLanguage('en', $inc_dir);
$mailer->isHTML(true); // С понтом дела отправляем html-письмо
$mailer->CharSet = 'windows-1251'; // В какой кодировке
$mailer->From = $From; // Что мы хотим видеть в поле From нашего письма
$mailer->FromName = "";
$mailer->Sender = '******@yandex.ru';
$mailer->Host = 'smtp.yandex.ru'; // Наш smtp-сервер
$mailer->Mailer = 'smtp'; // Как отсылать. Вариант по умолчанию - 'mail'
$mailer->Username = '******'; // Логин для авторизации на smtp-сервере
$mailer->Password = '*******'; // Пароль для авторизации
$mailer->SMTPAuth = true; // Будем авторизоваться? Будем!
$mailer->Body = $body; // html-код письма
$mailer->AltBody = $body; // plain-text версия
$mailer->Subject = $subject;
$mailer->AddAddress($to);
$res = $mailer->Send();
$mailer->ClearAddresses();
return $res;
}
function mail_subscribe($From, $to, $subject, $body, $Username)
{
require_once('class.phpmailer.php');
$mailer = new PHPMailer;
$mailer->SetLanguage('en', $inc_dir);
$mailer->isHTML(true); // С понтом дела отправляем html-письмо
$mailer->CharSet = 'windows-1251'; // В какой кодировке
$mailer->From = $From; // Что мы хотим видеть в поле From нашего письма
$mailer->FromName = "";
$mailer->Sender = $Username;
$mailer->Host = 'smtp.yandex.ru'; // Наш smtp-сервер
$mailer->Mailer = 'smtp'; // Как отсылать. Вариант по умолчанию - 'mail'
$mailer->Username = $Username; // Логин для авторизации на smtp-сервере
$mailer->Password = '********'; // Пароль для авторизации
$mailer->SMTPAuth = true; // Будем авторизоваться? Будем!
$mailer->Body = $body; // html-код письма
$mailer->AltBody = $body; // plain-text версия
$mailer->Subject = $subject;
$mailer->AddAddress($to);
$res = $mailer->Send();
$mailer->ClearAddresses();
return $res;
}
//передается номер баннера, а возвращает htmlкод баннера
function show_banner($adv_place)
{
$ds_arr = mysql_fetch_array(mysql_query("select adv_code from adv_list where adv_place='".$adv_place."'"));
echo $ds_arr['adv_code'];
}
?>
Помогите.
Спустя 9 минут, 45 секунд (24.05.2011 - 19:01) Mirexzpalich написал(а):
А ваш хост позволяет "спамить"?
Спустя 4 минуты, 27 секунд (24.05.2011 - 19:06) Игорь_Vasinsky написал(а):
ты весёлы парень!
Спустя 3 часа, 13 минут, 8 секунд (24.05.2011 - 22:19) Rodimon написал(а):
Цитата (Mirexzpalich @ 24.05.2011 - 16:01) |
А ваш хост позволяет "спамить"? |
Как об этом узнать?
Спустя 4 минуты, 26 секунд (24.05.2011 - 22:23) Игорь_Vasinsky написал(а):
отправь тихонько письма не на всю свою миллионную базу - а на 3-5 емайлов
Спустя 4 минуты, 57 секунд (24.05.2011 - 22:28) Rodimon написал(а):
Цитата (Игорь_Vasinsky @ 24.05.2011 - 19:23) |
отправь тихонько письма не на всю свою миллионную базу - а на 3-5 емайлов |
Я отправляю на одно email все уходит прекрасно, все как надо. Рассылкой не занимался. и не понимаю где загвоздка?
Спустя 4 минуты, 45 секунд (24.05.2011 - 22:33) Игорь_Vasinsky написал(а):
вот честно - мне лень десятки строк ивоего кода изучать
нотисы есть?
суппорт что говорит - можно с их хоста мылить по чём зря?
нотисы есть?
суппорт что говорит - можно с их хоста мылить по чём зря?
Спустя 1 час, 58 минут, 48 секунд (25.05.2011 - 00:32) inpost написал(а):
Rodimon
Весь скрипт? Неее, даже читать не буду. Зато практика показывает, если ты циклом всё сделаешь, то отправится первое письмо, на втором сервер даст отбой, для массовой рассылки надо паузу ставить между функцией mail(); Иногда в 1 сек, иногда в 0,1 сек
Весь скрипт? Неее, даже читать не буду. Зато практика показывает, если ты циклом всё сделаешь, то отправится первое письмо, на втором сервер даст отбой, для массовой рассылки надо паузу ставить между функцией mail(); Иногда в 1 сек, иногда в 0,1 сек
Спустя 8 часов, 17 минут, 13 секунд (25.05.2011 - 08:49) Rodimon написал(а):
Цитата (Игорь_Vasinsky @ 24.05.2011 - 19:33) |
вот честно - мне лень десятки строк ивоего кода изучать нотисы есть? суппорт что говорит - можно с их хоста мылить по чём зря? |
Суппорт конкретного ответа не дает, на мой вопрос. И сказали не помогают в настройке скрипта!
Не знаю что такое нотисы.
Спустя 3 минуты, 8 секунд (25.05.2011 - 08:52) Rodimon написал(а):
Цитата (inpost @ 24.05.2011 - 21:32) |
Rodimon Весь скрипт? Неее, даже читать не буду. Зато практика показывает, если ты циклом всё сделаешь, то отправится первое письмо, на втором сервер даст отбой, для массовой рассылки надо паузу ставить между функцией mail(); Иногда в 1 сек, иногда в 0,1 сек |
Кстати возможно в этом и есть загвозка! А поподробней можно?
Спустя 41 минута, 15 секунд (25.05.2011 - 09:33) Игорь_Vasinsky написал(а):
пчитай про sleep() php
Спустя 1 час, 41 минута, 28 секунд (25.05.2011 - 11:15) ИНСИ написал(а):
Я так понимаю, что автор темы не сможете сделать сам такой скрипт, но обычно делают так:
1. Имеется 500 email-ов
2. Имеем скрипт, который рассылает письма
3. Рассылаем письма по 10-20 писем, затем sleep на пару секунд и так дальше.
Обычно на такой алгоритм не жалуется хостинг А по теме, то да, видать хостер не позволяет + могут быть ограничения, допустим в час можно разослать всего 500-1000 или более писем, зависит от хостера и его тарифов.
1. Имеется 500 email-ов
2. Имеем скрипт, который рассылает письма
3. Рассылаем письма по 10-20 писем, затем sleep на пару секунд и так дальше.
Обычно на такой алгоритм не жалуется хостинг А по теме, то да, видать хостер не позволяет + могут быть ограничения, допустим в час можно разослать всего 500-1000 или более писем, зависит от хостера и его тарифов.
Спустя 6 часов, 6 минут, 55 секунд (25.05.2011 - 17:22) Rodimon написал(а):
Цитата (velbox @ 25.05.2011 - 08:15) |
3. Рассылаем письма по 10-20 писем, затем sleep на пару секунд и так дальше. |
Ребята благодарен очень сильно вам, но еще такой момент:
Скрипты я писать естественно не умею. Подскажите где в данном коде мне поставить метод sleep () и рассылку по 20 писем?
Я так понимаю это здесь?
</td></tr>
<tr><td>Статус рассылки</td>
<td><select name="status_" size="1" title="Статус">
<option value="stop" <? if ( $ds_arr['status_']=='stop') echo 'selected="selected"';?>>Остановлено</option>
<option value="run" <? if ( $ds_arr['status_']=='run') sleep(3) echo 'selected="selected"'; if ( $ds_arr['status_']=='end') echo 'disabled="disabled"';?> >Выполняется</option>
<option value="end" <? if ( $ds_arr['status_']=='end') echo 'selected="selected"';?> disabled="disabled">Завершено</option>
</select>
</td>
Спустя 12 минут, 58 секунд (25.05.2011 - 17:35) Rodimon написал(а):
Скорее всего надо здесь прописать?
[code]
function mail_($From, $to, $subject, $body)
{
require_once('class.phpmailer.php');
$mailer = new PHPMailer;
$mailer->SetLanguage('en', $inc_dir);
$mailer->isHTML(true); // С понтом дела отправляем html-письмо
$mailer->CharSet = 'windows-1251'; // В какой кодировке
$mailer->From = $From; // Что мы хотим видеть в поле From нашего письма
$mailer->FromName = "";
$mailer->Sender = '******@yandex.ru';
$mailer->Host = 'smtp.yandex.ru'; // Наш smtp-сервер
$mailer->Mailer = 'smtp'; // Как отсылать. Вариант по умолчанию - 'mail'
$mailer->Username = '******'; // Логин для авторизации на smtp-сервере
$mailer->Password = '*******'; // Пароль для авторизации
$mailer->SMTPAuth = true; // Будем авторизоваться? Будем!
$mailer->Body = $body; // html-код письма
$mailer->AltBody = $body; // plain-text версия
$mailer->Subject = $subject;
$mailer->AddAddress($to);
$res = $mailer->Send();
$mailer->ClearAddresses();
return $res;
}
function mail_subscribe($From, $to, $subject, $body, $Username)
{
require_once('class.phpmailer.php');
$mailer = new PHPMailer;
$mailer->SetLanguage('en', $inc_dir);
$mailer->isHTML(true); // С понтом дела отправляем html-письмо
$mailer->CharSet = 'windows-1251'; // В какой кодировке
$mailer->From = $From; // Что мы хотим видеть в поле From нашего письма
$mailer->FromName = "";
$mailer->Sender = $Username;
$mailer->Host = 'smtp.yandex.ru'; // Наш smtp-сервер
$mailer->Mailer = 'smtp'; // Как отсылать. Вариант по умолчанию - 'mail'
$mailer->Username = $Username; // Логин для авторизации на smtp-сервере
$mailer->Password = '********'; // Пароль для авторизации
$mailer->SMTPAuth = true; // Будем авторизоваться? Будем!
$mailer->Body = $body; // html-код письма
$mailer->AltBody = $body; // plain-text версия
$mailer->Subject = $subject;
$mailer->AddAddress($to);
$res = $mailer->Send();
$mailer->ClearAddresses();
return $res;
}
//передается номер баннера, а возвращает htmlкод баннера
function show_banner($adv_place)
{
$ds_arr = mysql_fetch_array(mysql_query("select adv_code from adv_list where adv_place='".$adv_place."'"));
echo $ds_arr['adv_code'];
}
?>
Спустя 8 минут, 25 секунд (25.05.2011 - 17:43) Snus написал(а):
Используй отложенную отправку. Уже несколько раз на форуме писал о такой методе.
Спустя 4 часа, 10 минут, 16 секунд (25.05.2011 - 21:53) ИНСИ написал(а):
Про sleep, как пример, то вот так:
$sizeSendMail = 15; // количество писем за раз
for($i = 0; $i <= $100; ++$i) {
if($i == $sizeSendMail) {
sleep(10); // интервал 10 секунд
$i = 0;
}
// тут уже код, который отправляет письма
sendMail(); // запускаем функцию отправки письма
}