Ayola.net
Новости: В связи с обилием спама, постинг на форуме временно закрыт.

Для связи с поддержкой используйте тикеты в панели управления.
 
*
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь. Октябрь 18, 2017, 10:36:03


Войти


Страниц: [1]
  Печать  
Автор Тема: Прошу помощи с PHPMailer  (Прочитано 7324 раз)
0 Пользователей и 1 Гость смотрят эту тему.
m16
Новичёк
*

Карма: 0
Сообщений: 39


Просмотр профиля WWW
« : Июнь 03, 2008, 23:38:18 »

Здравствуйте!
Есть вот такой код формы рассылки всем пользователям сайта (закоментированы строки для функции 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);
    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

require("../phpmailer/class.phpmailer.php");
$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>

Проблема: Письмо отправляется только первому пользователю, прописанного в базе (остальных игнорирует).
И выводится ошибка:

Fatal error: Cannot redeclare class PHPMailer in /www_host/hosts/metkon.zx6.ru/ttt/phpmailer/class.phpmailer.php on line 21

Как заставить повторно обновить класс PHPMailer?
« Последнее редактирование: Июнь 03, 2008, 23:53:40 от m16 » Записан
support@ayola.net
Вне категорий
Маэстро
*****

Карма: 267
Сообщений: 4901



Просмотр профиля WWW
« Ответ #1 : Июнь 03, 2008, 23:51:44 »

require_once

И убрать эту строку из цикла - её достаточно 1 раз дергать.
Записан

Бесплатный хостинг с PHP и MySQL

Вопросы и ответы - http://faq.ayola.net
Правка .htaccess - http://htaccess.ayola.net
Техподдержка - http://www.ayola.net/panel/tickets.php
По вопросам хостинга личные сообщения не пишите. Для этого есть тикеты.
m16
Новичёк
*

Карма: 0
Сообщений: 39


Просмотр профиля WWW
« Ответ #2 : Июнь 04, 2008, 00:16:14 »

Спасибо.
Почему то не получается.
В тестовой базе хранятся 3 пользователя.
Поместил строку require_once ("../phpmailer/class.phpmailer.php"); над циклом.
Ошибка осталась, но приходят первому пользователю сразу 3 письма. Остальных игнорирует.

Записан
kdomnin
Вникающий
***

Карма: 5
Сообщений: 174


Просмотр профиля WWW
« Ответ #3 : Июнь 04, 2008, 00:24:20 »

И у меня та же ерунда: Fatal error: Cannot redeclare class PHPMailer in ...
Код практически такой же, только еще в цикле проверяю, выбраны ли чекбоксы и отсылаю только выбранным пользователям
И еще, может саппорты подскажут (тоже SMF используют)- у меня форум SMF 1.1.4 - так вот он не хочет делать рассылки пользователям. В админке поставил через SMTP , сервер,логин, пароль - но не отправляет, в логах ошибок админки говорит, что не может подключиться к серверу mail.ayola.net
И почему то при сохранении пароля в админке после перезагрузки страницы вижу, что число звездочек в поле пароля - 12, а я вводил 10 (айоловские пароли 10 значные)  - какой-то глюк непонятный
Записан
m16
Новичёк
*

Карма: 0
Сообщений: 39


Просмотр профиля WWW
« Ответ #4 : Июнь 05, 2008, 00:24:33 »

Господа гуру!
Мысли есть?  Непонимающий
Я этот код и так и эток, а он вникакую.   Обеспокоенный

Единственный код который у меня сработал, так это вот этот (но он служит для совсем другой рассылки).
Несколькими словами: Эта часть кода, автоматически рассылает сообщения тем пользователям которые оставили свои сообщения, на определённой странице.

$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++;
  }
?>
Записан
Страниц: [1]
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.13 | SMF © 2006, Simple Machines LLC

2003-2008 © ООО "Инфотур" - Бесплатный хостинг Ayola.net
Valid XHTML 1.0! Valid CSS! Dilber MC Theme by HarzeM
Страница сгенерирована за 0.082 секунд. Запросов: 17.