Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 25.04.2018, 07:04   #1
andriushka
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 19
Репутация: 10
По умолчанию Не отправляет на несколько адресов

Добрый день.Проблема следующая, если выбрана 1 запись то отправка осуществляется корректно,если же пытаюсь выполнить отправку сразу нескольким то происходит сбой хотя в базе происходит преобразование
Обработка осуществляется следующим образом:
Код:

foreach($_POST['q'] as $val)
                {
                        if(!isset($_SESSION['error']))
                        {
$sender = new sender;
$message_name = 'qqqq';

$message_name = 'Пользователь';
$message_text = ' ';
$message_data = array(
    'to'            => $data['email'],
    'to_name'       => $message_name,
    'title'         => $sender->mail_content['title'],
    'text'          => $message_text,
    'alt_text'      => strip_tags($message_text)
    );
$mailSend = $sender->sendMail($sender->smtp_data, $message_data);

unset($sender, $mailSend, $message_name, $message_text, $message_data);

                                $query = "update result set `reestr` = 1 where id = '$val' ";
                                $ress = mysqli_query($con, $query);

                                $Time = date('Y-m-d H-s-i');
                                $query = "update result set `date_reestr` = '$Time' where id = '$val' ";
                                $ress = mysqli_query($con, $query);

                                $query = "select * from result where id = '$val' ";
                                $res = mysqli_query($con, $query);
                                $data = array();
                                $data = mysqli_fetch_array($res);

                        }
                }

Сама функция отправки выглядит следующим образом:
Код:

class sender
{
        public $smtp_data = array(
                "host"                  => '',                     // SMTP сервер
        "debug"                 => 1,                                           // Уровень логирования
        "debugoutput"   => 'html',                                      //формат вывода лога, если включено логирование
        "auth"                  => true,                                        // Авторизация на сервере SMTP. Если ее нет - false
        "port"                  => ,                                         // Порт SMTP сервера
        "username"              => '', // Логин на SMTP сервере
        "password"              => '',                                // Пароль на SMTP сервере
        "fromname"              => 'Нежелательнй контент',              // Отображаемое имя отправителя
        "replyto"               => array(
                "address"       => '',     // адрес почты для ответа
                "name"          => 'Администратор'      //отображаемое имя владельца ящика
                ),
        "notification"  => array(
                "address"       => '',     // Почта оповещения админа (не оповещать- оставить пустым)
                "name"          => 'Администратор'      //отображаемое имя владельца ящика
                ),
        "secure"                => 'tls',                                       // Тип шифрования. Например ssl или tls
        "charset"               => 'UTF-8',                                     //кодировка отправляемых писем
        "verify"                => '0'                                          // Верификация сертификата. 0 -выкл, 1 - вкл (выключить при возникновении ошибок связанных с SSL сертификатами при отправке)
    );

                //сожержимое письма(тема, шапка и подвал письма)
        public $mail_content = array(
                'title'         => 'Реестр негативного контента: сообщение',
                'header'        => '',
                'footer'        => '</b><br />
                                                С Уважением, <a href=""></a><br />
                                                Это сообщение отправлено автоматически, на него не нужно отвечать.'
                                                );


        /**
         *              Функция "склеивает" сообщение со статичным хедером и футером
         *
        **/
        private function fullText($text)
        {
            if(!empty($text))
            {
                return $this->mail_content['header'] . $text . $this->mail_content['footer'];
            }
            else
            {
                die("Отсутствует текст письма");
            }
        }


        /**
         * функция отправки сообщения на почту об успешной оплате
         * используется, если включена отправка почты
         * если отправка прошла успешна - возвращает 0, иначе - лог ошибок
         * принимаемые данные:
         *              $smtp_data              - массив данных для подключения к SMTP
         *              $message_data   - массив данных содержимого самого письма и адресата
        **/
        function sendMail($smtp_data, $message_data)
        {
                require_once('./PHPMailer/PHPMailerAutoload.php'); // подключаем PHPMailer
                $mail = new PHPMailer;
                $mail->isSMTP();
                if($smtp_data['verify'] == 0)
                {
                        $mail->SMTPOptions = array(
                            'ssl' => array(
                                'verify_peer' => false,
                                'verify_peer_name' => false,
                                'allow_self_signed' => true
                            ));
                }

                $mail->Host             = $smtp_data['host'];
                $mail->SMTPDebug        = $smtp_data['debug'];
                $mail->Debugoutput      = $smtp_data['debugoutput'];
                $mail->SMTPAuth         = $smtp_data['auth'];
                $mail->Port             = $smtp_data['port'];
                $mail->Username         = $smtp_data['username'];
                $mail->Password         = $smtp_data['password'];
                $mail->SMTPSecure       = $smtp_data['secure'];
                $mail->CharSet          = $smtp_data['charset'];

                $mail->setFrom($smtp_data['username'], $smtp_data['fromname']);
                $mail->addReplyTo($smtp_data['replyto']['address'], $smtp_data['replyto']['name']);
                if(!empty($smtp_data['notification']['address']))
                {
                        $mail->addAddress($smtp_data['notification']['address'], $smtp_data['notification']['name']);
                }
                $mail->addAddress($message_data['to'], $message_data['to_name']);
                $mail->Subject = $message_data['title'];
                $mail->msgHTML($this->fullText($message_data['text']));
                $mail->AltBody = strip_tags($this->fullText($message_data['alt_text']));

                if (!$mail->send())
                {
                        die("Mailer Error: " . $mail->ErrorInfo);
                }
                else
                {
                return 0;
                }
        }

andriushka вне форума   Ответить с цитированием
Старый 25.04.2018, 08:52   #2
Stanislav
Квадрокоптерист
Профессионал
 
Регистрация: 29.09.2007
Сообщений: 1,804
Репутация: 532
По умолчанию

Цитата:
то происходит сбой
неопознанная ошибка? каковы шансы что Вам ответят? никто не станет дебажить Ваш код, так Вы еще умудряетесь не написать что за ошибка. что возвращает?
Код:

   die("Mailer Error: " . $mail->ErrorInfo);

__________________
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума   Ответить с цитированием
Старый 25.04.2018, 10:30   #3
andriushka
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
неопознанная ошибка? каковы шансы что Вам ответят? никто не станет дебажить Ваш код, так Вы еще умудряетесь не написать что за ошибка. что возвращает?
Код:

   die("Mailer Error: " . $mail->ErrorInfo);

Код:

Invalid address:
CLIENT -> SERVER: EHLO test.info
CLIENT -> SERVER: STARTTLS
CLIENT -> SERVER: EHLO test.info
CLIENT -> SERVER: AUTH LOGIN
CLIENT -> SERVER: aWJtZXNzYWdlc0BlZHUyMi5pbmZv
CLIENT -> SERVER: aWJtZXNzYWdlcw==
CLIENT -> SERVER: MAIL FROM:<test@mail.ru>
CLIENT -> SERVER: RCPT TO:<test@mail.ru>
CLIENT -> SERVER: DATA
CLIENT -> SERVER: Date: Wed, 25 Apr 2018 12:25:18 +0700
CLIENT -> SERVER: To: =?UTF-8?B?0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YA=?= <test@mail.ru>
CLIENT -> SERVER: From: =?UTF-8?B?0J3QtdC20LXQu9Cw0YLQtdC70YzQvdC5INC60L7QvdGC0LXQvdGC?= <test@mail.ru>
CLIENT -> SERVER: Reply-To: =?UTF-8?B?0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YA=?= <test@mail.ru>
CLIENT -> SERVER: Subject: =?UTF-8?B?0KDQtdC10YHRgtGAINC90LXQs9Cw0YLQuNCy0L3QvtCz0L4g0LrQvtC90YI=?=
CLIENT -> SERVER: =?UTF-8?B?0LXQvdGC0LA6INGB0L7QvtCx0YnQtdC90LjQtQ==?=
CLIENT -> SERVER: Message-ID: <1dd6021f2957a4e61df2c9c1bf44d026@test.info>
CLIENT -> SERVER: X-Mailer: PHPMailer 5.2.13 (https://github.com/PHPMailer/PHPMailer)
CLIENT -> SERVER: MIME-Version: 1.0
CLIENT -> SERVER: Content-Type: multipart/alternative;
CLIENT -> SERVER: boundary="b1_1dd6021f2957a4e61df2c9c1bf44d026"
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
CLIENT -> SERVER:
CLIENT -> SERVER: This is a multi-part message in MIME format.
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_1dd6021f2957a4e61df2c9c1bf44d026
CLIENT -> SERVER: Content-Type: text/plain; charset=UTF-8
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
CLIENT -> SERVER:
CLIENT -> SERVER: Уважаемый пользователь! Благодарим Вас за сообщение о нежелательном контенте. Сообщаем, что предложенный Вами ресурс внесен в реестр нежелательного контента.
CLIENT -> SERVER:
CLIENT -> SERVER: С Уважением,
CLIENT -> SERVER: Это сообщение отправлено автоматически, на него не нужно отвечать.
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_1dd6021f2957a4e61df2c9c1bf44d026
CLIENT -> SERVER: Content-Type: text/html; charset=UTF-8
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
CLIENT -> SERVER:
CLIENT -> SERVER: Уважаемый пользователь! Благодарим Вас за сообщение о нежелательном контенте. Сообщаем, что предложенный Вами ресурс внесен в реестр нежелательного контента<br />
CLIENT -> SERVER: <b><br /> </b><br />
CLIENT -> SERVER: С Уважением, <a href=""></a><br />
CLIENT -> SERVER: Это сообщение отправлено автоматически, на него не нужно отвечать.
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_1dd6021f2957a4e61df2c9c1bf44d026--
CLIENT -> SERVER:
CLIENT -> SERVER: .
CLIENT -> SERVER: QUIT

и также еще раз индентично
andriushka вне форума   Ответить с цитированием
Старый 25.04.2018, 12:08   #4
Stanislav
Квадрокоптерист
Профессионал
 
Регистрация: 29.09.2007
Сообщений: 1,804
Репутация: 532
По умолчанию

Цитата:
$mail->msgHTML($this->fullText($message_data['text']));
это Ваш текст?

Цитата:
CLIENT -> SERVER: Уважаемый пользователь! Благодарим Вас за сообщение о нежелательном контенте. Сообщаем, что предложенный Вами ресурс внесен в реестр нежелательного контента.
CLIENT -> SERVER:
CLIENT -> SERVER: С Уважением,
CLIENT -> SERVER: Это сообщение отправлено автоматически, на него не нужно отвечать.
CLIENT -> SERVER:
CLIENT -> SERVER:
CLIENT -> SERVER: --b1_1dd6021f2957a4e61df2c9c1bf44d026
CLIENT -> SERVER: Content-Type: text/html; charset=UTF-8
CLIENT -> SERVER: Content-Transfer-Encoding: 8bit
CLIENT -> SERVER:
CLIENT -> SERVER: Уважаемый пользователь! Благодарим Вас за сообщение о нежелательном контенте. Сообщаем, что предложенный Вами ресурс внесен в реестр нежелательного контента<br />
CLIENT -> SERVER: <b><br /> </b><br />
CLIENT -> SERVER: С Уважением, <a href=""></a><br />
CLIENT -> SERVER: Это сообщение отправлено автоматически, на него не нужно отвечать.

Цитата:
происходит сбой
где сбой то?
__________________
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума   Ответить с цитированием
Старый 25.04.2018, 12:22   #5
andriushka
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
это Ваш текст?




где сбой то?
в том то и дело,что если выбираешь 1 запись в таблице то всё хорошо и в конце переход на нужную страницу,а если выбираешь 2 и более записи то переходит вот на страницу где такой текст и он повторяется блоками столько раз сколько записей было выбрано и не происходит отправки но в базе перезаписывается.
Под сбоем я подразумеваю вот этот момент что когда выбрано 2 и более записи переходит на эту страницу с текстом а не на ту которую нужно.
Текст это мой,он взял его из шапки сообщений и вот так частями вывел
andriushka вне форума   Ответить с цитированием
Старый 25.04.2018, 12:42   #6
Stanislav
Квадрокоптерист
Профессионал
 
Регистрация: 29.09.2007
Сообщений: 1,804
Репутация: 532
По умолчанию

Не знаю что Вам посоветовать, я использовал эту либу и проблем не было, только я делал несколько иначе создавал объект, а в цикле только менял адресата и делал send.

Это конечно к этому не относится но мне не нравится как у Вас написано. Вы в цикле постоянно подключается класс создаете объект и осуществляете отправку, так конечно можно, но представьте у вас будет 1000 адресатов и Вы будете 1000 раз подключать класс
Цитата:
require_once('./PHPMailer/PHPMailerAutoload.php'); // подключаем PHPMailer
По правильному подключили создали объект а внутри цикла меняете адресата и отправка.


Кстати если Вам не важно что в письме будет виден список всех кому пришло данное письмо то в цикле можно прогнать адресатов

Код:

foreach($email as $key)
{
	$this->email->AddAddress($key."@blabla.ru");
}


а потом отправить

Цитата:
$this->email->isHTML(true);
$this->email->From ='bla@bla.ru';
$this->email->FromName = 'Name';
$this->email->Subject = 'Inspection Request ['.$prod_date.']';
$this->email->Body = '<img scr="logo_2"';


$this->email->addAttachment('$path');

$this->email->Body = '<h4>bla bla '.$prod_date.': </h4> <br> "<img src="cid:logo_2u"> ';
$this->email->Send();

p.s email это обертка над либой
__________________
Я часть той силы, что вечно хочет зла, но вечно совершает благо..

Последний раз редактировалось Stanislav; 25.04.2018 в 12:51.
Stanislav вне форума   Ответить с цитированием
Старый 26.04.2018, 07:40   #7
andriushka
Пользователь
 
Регистрация: 05.04.2017
Сообщений: 19
Репутация: 10
По умолчанию

Цитата:
Сообщение от Stanislav Посмотреть сообщение
По правильному подключили создали объект а внутри цикла меняете адресата и отправка.
А можно данный момент чуть поподробнее?Т.к. 2 файла у меня то немного путаница,в каком из них лучше это сделать и как
andriushka вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не отправляет сообщение клиентам bypus12 C/C++ Сетевое программирование 0 04.06.2014 17:04
Не отправляет POST запрос ProDaNTe Работа с сетью в Delphi 2 16.02.2013 06:23
Рассылка на несколько адресов motorway Microsoft Office Excel 9 28.01.2012 16:01
Не отправляет сообщения Mihanches Работа с сетью в Delphi 0 18.10.2010 17:18
idTCPClient не отправляет сообщения TwiX Работа с сетью в Delphi 2 10.03.2010 00:56


12:25.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru