|
|
|
| Здравствуйте!
Есть вот такой код формы рассылки всем пользователям сайта (закоментированы строки для функции mail() ):
<?
//$headers = "MIME-Version: 1.0\r\n";
// $headers .= "Content-type: text/html; charset=windows-1251\r\n";
// $headers .= "From: Info <metkon@zx6.ru>\r\n";
$date = date("d.m.Y г.");
$date2 = date("H:i");
// $file=file("../mailadm.txt");
// $from=$file[0];
// $ser=$file[2];
$subj="Новости.";
$telo="НОВОСТИ САЙТА";
$telo.=$date;
$telo.="<br>";
$telo.=$date2;
$telo.="Эта рассылка направлена Вам, как подписчику на новости сайта</p>Администрация уведомляет Вас:</p>
<FORM name=\"txt\"><TD id=t>";
$telo.=$textarea;
$telo.="</TD></FORM><TR>
<TD id=t><p>Спасибо.<br>
С уважением,<br>
Администрация</p></TD></TR>
<TR><FORM name=\"no\">
<TD>Вы можете отказаться от рассылки новостей:.......</TD>
</FORM> </TR></TABLE></BODY></HTML>";
$x=0;
$db = mysql_connect("sql-2.ayola.net", "name", "password");
mysql_select_db("name");
if($torgi=="all")
{
$sql = "SELECT * FROM subs_users";
}
else if($torgi=="allua")
{
$sql = "SELECT * FROM subs_users WHERE torg='ukr'";
}
else if($torgi=="allex")
{
$sql = "SELECT * FROM subs_users WHERE torg='port'";
}
$result = mysql_query($sql,$db);
require_once("../phpmailer/class.phpmailer.php"); // перед циклом подключаем class.phpmailer.....
while($a<@mysql_numrows($result))
{
$email = mysql_result($result, $x, 'email');
$login = mysql_result($result, $x, 'login');
if($login)
{
$telo2=$telo;
$telo2=str_replace("mailo","$email",$telo2);
// @mail($email, $subj, $telo2, $headers);
// код PHPMailer
$mail = new PHPMailer();
$mail->IsSMTP();// отсылать используя SMTP
$mail->Host = "mail.ayola.net"; // SMTP сервер
$mail->SMTPAuth = true; // включить SMTP аутентификацию
$mail->Username = "metkon@zx6.ru"; // SMTP username
$mail->Password = "password"; // SMTP password
$mail->From = "metkon@zx6.ru"; // укажите от кого письмо
$mail->FromName = "$email"; // имя отправителя
$mail->AddAddress("$email"); // е-мэил кому отправлять
$mail->AddReplyTo("metkon@zx6.ru","Info"); // е-мэил того кому прейдет ответ на ваше письмо
$mail->WordWrap = 50;// set word wrap
$mail->IsHTML(true);// отправить в html формате
$mail->Subject = "$subj"; // тема письма
$mail->Body = "$telo2"; // тело письма в html формате
//$mail->AltBody = "$msg"; // тело письма текстовое
if(!$mail->Send())
{
echo "Письмо не отправлено ";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
echo "Письмо отправлено";
// конец кода PHPMailer
}
$a++;
}
mysql_close();
?>
<script>
window.close();
</script>
Проблема:
В тестовой базе хранятся 3 пользователя.
Первому пользователю приходят сразу 3 письма. Остальных игнорирует.
И выводится ошибка:
Fatal error: Cannot redeclare class PHPMailer in /www_host/hosts/metkon.zx6.ru/ttt/phpmailer/class.phpmailer.php on line 21
Как заставить повторно обновить класс PHPMailer? | |
|
|
|
|
|
|
|
для: m16
(04.06.2008 в 20:28)
| | У вас файл с классом PHPMailer подключается два раза, используйте вместо include или require, директивы include_once и require_once. | |
|
|
|
|
|
|
|
для: cheops
(05.06.2008 в 12:05)
| | >У вас файл с классом PHPMailer подключается два раза, используйте вместо include или require, директивы include_once и require_once.
Спасибо за ответ.
Пробывал как Вы посоветовали. Не получается. Поведение тоже самое.
Единственный код который у меня сработал, так это вот этот (но он служит для совсем другой рассылки).
Несколькими словами: Эта часть кода, автоматически рассылает сообщения тем пользователям которые оставили свои сообщения, на определённой странице.
$mailfor=explode(",",$users2);
$a=0;
require_once("../phpmailer/class.phpmailer.php");
while($a<sizeof($mailfor)){
$mailt=explode("-",$mailfor[$a]);
$ $db = mysql_connect("sql-2.ayola.net", "name", "password");
mysql_select_db("name");
$sql = "SELECT * FROM auk_us WHERE login='$mailt[0]'";
$result = mysql_query($sql,$db);
$email = @mysql_result($result, $x, 'email');
$telo2=$telo;
$telo2=str_replace("mailo",$email,$telo2);
// @mail($email,$subj,$telo2,$headers);
$mail = new PHPMailer();
$mail->IsSMTP();// отсылать используя SMTP
$mail->Host = "mail.ayola.net"; // SMTP сервер
$mail->SMTPAuth = true; // включить SMTP аутентификацию
$mail->Username = "metkon@zx6.ru"; // SMTP username
$mail->Password = "password"; // SMTP password
$mail->From = "metkon@zx6.ru"; // укажите от кого письмо
$mail->FromName = "$email"; // имя отправителя
$mail->AddAddress("$email"); // е-мэил кому отправлять
$mail->AddReplyTo("metkon@zx6.ru","Info"); // е-мэил того кому прейдет ответ на ваше письмо
$mail->WordWrap = 50;// set word wrap
$mail->IsHTML(true);// отправить в html формате
$mail->Subject = "$subj"; // тема письма
$mail->Body = "$telo2"; // тело письма в html формате
//$mail->AltBody = "$msg"; // тело письма текстовое
if(!$mail->Send())
{
echo "Письмо не отправлено ";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}
$a++;
}
?> | |
|
|
|