Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
ketch
1 / 1 / 0
Регистрация: 28.07.2009
Сообщений: 79
1

Скрипт для рассылки email через smtp gmail, не отрабатывает до конца

10.03.2015, 15:20. Просмотров 2032. Ответов 12
Метки нет (Все метки)

Здравствуйте, написал небольшой скрипт, который подключаясь к почте на Gmail через smtp, циклом "бомбит" сообщения. Класс для работы с smtp рабочий, скачал с одного хорошего ресурса. В конце скрипта поставил контрольную отправку письма на другой ящик с отчетом - сколько отправил из скольки писем. В начале программы отключил временные лимиты и игнорирую отключения браузера-клиента, чтобы можно было закрыть вкладку со скриптом.
Проблема в следующем: Если пробовать отослать небольшое количество - 20,50,80 писем - все отсылается и в конце на ящик приходит отчет, как и задумывалось. Но если адресов - 500 и более, то в какой-то момент (мне неизвестный, всегда по разному: после 50,70, 100 писем) скрипт завершает работу и в конце даже никакого отчета не приходит. То есть прерывается не только цикл отправки, но и дальнейшее выполнение всех инструкций.

В чем же может быть дело, собственно вот сам этот скрипт.
Надеюсь на вашу помощь:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?
@set_time_limit(0);
@ignore_user_abort(1);
//#####################################################
require_once "SendMailSmtpClass.php"; // подключаем класс
 //получение значений полей
$sender=$_POST['sender'];
$pass=$_POST['psswd'];
$name='=?UTF-8?B?'.base64_encode($_POST['author']).'?=';// имя фамилия
$theme=$_POST['theme'];
$message=$_POST['message'];
$to=$_POST['emails'];
$total=0;
 
$mailSMTP = new SendMailSmtpClass($sender, $pass, 'ssl://smtp.gmail.com', $name, 465); // создаем экземпляр класса
// $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'имя отправителя');
 
//запись адресов в файл
$file_name="mails.txt";
$fp=fopen($file_name,"w");
fwrite($fp,$to);
fclose($fp);
 
//запись в массив адресов из файла
$emails=file($file_name);
$num=count($emails);
 
//отправка и вывод на экран
  
     if(!empty($sender)&&!empty($theme)&&!empty($message)&&!empty($to)) {
         for($i=0;$i<$num;$i++) {
             $address=rtrim($emails[$i]);
             //Заголовки
             $headers = "MIME-Version: 1.0\r\n";
             $headers.= "Content-type: text/html; charset=UTF-8 \r\n";
             $headers.= "From: $name <$sender>\r\n";
             $headers.= "Reply-to: Reply to $name <$sender>\r\n";
             $headers.= "To: <$address>";
 
             //Отправка
             $result=$mailSMTP->send($address, $theme, $message, $headers);
             
             if($result===true){
             $total++;
             }
             sleep(1); //задержка 1 секунда
    }  
}
     else echo "Ошибка: Не все поля были заполнены!";
     
//очищаем файл
$fp=fopen($file_name,"w");
fclose($fp);
$mailSMTP->send("example@yandex.ru", "Рассылка Завершена", "Отправлено $total из $num","From: Example Test <example@test.ru>"); // мыла поменял чтобы не палить
?>
Добавлено через 54 минуты
ап!

Добавлено через 18 минут
ау, тут есть программисты? что-то не особо активный ресурс, на "мертвый" похож
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.03.2015, 15:20
Ответы с готовыми решениями:

Email рассылки свой скрипт или MailChimp?
Предложили заняться большим проектом. Для социальной сети нужно реализовать возможность отправления...

Не до конца отрабатывает CMD скрипт при выключении компьютера (Win7Pro) при настройке через групповую политику (2008r2)
Добрый день! Имеется сервер 2008r2, поднят домен средствами AD. Клиенты Win7Pro. Суть проблемы в...

Почему скрипт не отрабатывает до конца?
Доброго времени суток. Есть такая форма в CRUD &lt;div class=&quot;addItemMenu form-group&quot;...

Ошибка отправки почты через smtp GMail
Товарищи, такая проблема - пытаюсь отправить почту через smtp с сайта. Вот кусок кода: static...

Настройка smtp для gmail.com
&lt;system.net&gt; &lt;mailSettings&gt; &lt;smtp from=&quot;*****@gmail.com&quot;&gt; &lt;network...

12
UchihaSV
221 / 182 / 92
Регистрация: 08.06.2013
Сообщений: 614
10.03.2015, 15:26 2
Возможно это из-за ограничения выполнения php-скрипта по времени, для увеличения времени используйте:
PHP
1
set_time_limit(60);
1
ketch
1 / 1 / 0
Регистрация: 28.07.2009
Сообщений: 79
10.03.2015, 15:30  [ТС] 3
у меня в самом начале кода
PHP
1
set_time_limit(0);
без ограничений то есть.
0
UchihaSV
221 / 182 / 92
Регистрация: 08.06.2013
Сообщений: 614
10.03.2015, 15:32 4
Еще может быть стоять ограничение у хостера на максимальное выполнение скрипта и на максимальное количество использований mail().
1
10.03.2015, 15:32
ketch
1 / 1 / 0
Регистрация: 28.07.2009
Сообщений: 79
10.03.2015, 15:32  [ТС] 5
Нет, это не из-за этого. Я проверял ставил интервал между отправкой 5 писем на минуту, потом закрывал браузер и все доходило.
Я mail() не использую если вы не заметили
0
UchihaSV
221 / 182 / 92
Регистрация: 08.06.2013
Сообщений: 614
10.03.2015, 15:34 6
Цитата Сообщение от ketch Посмотреть сообщение
$mailSMTP = new SendMailSmtpClass($sender, $pass, 'ssl://smtp.gmail.com', $name, 465); // создаем экземпляр класса
// $mailSMTP = new SendMailSmtpClass('логин', 'пароль', 'хост', 'имя отправителя');
Что за цифры в аргументе?
1
ketch
1 / 1 / 0
Регистрация: 28.07.2009
Сообщений: 79
10.03.2015, 15:36  [ТС] 7
номер порта
0
UchihaSV
221 / 182 / 92
Регистрация: 08.06.2013
Сообщений: 614
10.03.2015, 15:37 8
Или возможно обрывается соединение с SMTP, из-за супер-пупер антиспама у gmail.com, а он там есть, и не позволит любому пользователю нон-стопом спамить.
1
ketch
1 / 1 / 0
Регистрация: 28.07.2009
Сообщений: 79
10.03.2015, 15:43  [ТС] 9
Ок, антиспам может не пропускать письма к отправке, но он же не может принудительно оборвать выполнение php-скрипта на моем хостинге и не дать ему выполнить последнюю инструкцию?
0
UchihaSV
221 / 182 / 92
Регистрация: 08.06.2013
Сообщений: 614
10.03.2015, 15:53 10
Последнюю инструкцию по отправке такого же письма как все остальные?
1
ketch
1 / 1 / 0
Регистрация: 28.07.2009
Сообщений: 79
10.03.2015, 15:55  [ТС] 11
да, именно ее вот
0
UchihaSV
221 / 182 / 92
Регистрация: 08.06.2013
Сообщений: 614
10.03.2015, 16:01 12
Лучший ответ Сообщение было отмечено ketch как решение

Решение

Ну антиспам и запретит ее тоже как и предыдущие, вы же все письма все шлете по одному потоку.

Ну все на ваш вопрос ответил, с тебя спасибка на все ответы и лучший ответ =)
1
ketch
1 / 1 / 0
Регистрация: 28.07.2009
Сообщений: 79
10.03.2015, 16:38  [ТС] 13
не вопрос - сделано.

Добавлено через 25 минут
ну тогда не понятно вообще как люди делают рассылки по своим базам (зарегистрированные пользователи, подписчики, и т.д. ) Все советовали использовать smtp с авторизацией, вот я и использовал.. а толку 0. Даже 500 писем не в состоянии отослать php
0
10.03.2015, 16:38
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2015, 16:38

DKIM для smtp.gmail.om
Здравствуйте. Проблема в том, что dkim вроде как правильно настроен, но не используется в...

Развернуть SMTP-сервер для массовой рассылки
Добрый день форумчане, Долго серфю инэт, и не могу ни как докопать до истины. Хоть пару слов в...

Шаблон для email-рассылки
Подскажите пожалуйста, как правильно верстать шаблон для рассылки? Т.е. интересует, можно ли...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru