Jump to content
Sign in to follow this  
Nanotraktor

[Решено] Рассылка обрывается на 60 письмах из нескольких сотен

Recommended Posts

Всем доброго дня.

При рассылке новостей через инструмент "Продажи" -- "Почта" возникает странная ошибка. Отправляется только 60 сообщений и всё. 

В логах сервера никаких ошибок (все запросы с 200 ОК, лог ошибок пуст), в логах самого опенкарта также пусто.

Панель гугл хрома показывает, что обращения к скрипту из формы происходит успешно, но после http://c2n.me/3hbxm2i.png сайт возвращает ответ 200 ОК, но нулевого объема "/admin/index.php?route=sale/contact/send&token=ea****&page=7":

http://c2n.me/3hbxhZN.png

Почтовый сервер исключил - ситуация повторяется независимо от того чей сервер использовать (пробовал несколько провайдеров и свой собственный на VPS)

Очень смущает тот факт что каждый раз отправляется строго 60 писем, но причину тому найти не получается пока что..  :|

Сегодня ещё перенесу сам сайт на другой сервер, но возможно, кто-то сталкивался со схожими ошибками? 

Буду благодарен за любые идеи по теме. 

 

Share this post


Link to post
Share on other sites

>> Почтовый сервер исключил - ситуация повторяется независимо от того чей сервер использовать (пробовал несколько провайдеров и свой собственный на VPS)

а настройки почты с вкладки показать?..

Share this post


Link to post
Share on other sites

Скриншот:

post-689235-0-13030100-1430827799_thumb.png

Почтовик на том же сервере что и сайт. Поэтому - localhost. 

Если использовать любой другой - ситуация никак не меняется. 

Версия CMS 1.5.6.4

Share this post


Link to post
Share on other sites

а если через mail() ?

может у 61го адресата email "того"?

логи точно пишутся?

в них точно пусто (те ли логи смотришь)?

Share this post


Link to post
Share on other sites

логи точно пишутся?

в них точно пусто (те ли логи смотришь)?

 

Логи пишутся точно. Собственно, по логу исправил ошибку с отключенным output_buffering. 

 

может у 61го адресата email "того"?

 

У меня тоже есть подозрение на то что какой-то email неправильный или по какой-то причине отсутствует. Но тут вопрос - как это можно проверить? 

 

Share this post


Link to post
Share on other sites

писать в лог необходимые для проверки данные перед попыткой отправить письмо.

Share this post


Link to post
Share on other sites

писать в лог необходимые для проверки данные перед попыткой отправить письмо.

Возможно, есть какой-то мануал, тематическая заметка или ещё какое-то наставление как это грамотно и без ущерба CMS сделать? 

Share this post


Link to post
Share on other sites

простейший вариант:

admin/controller/sale/contact.php

					$message .= '</html>' . "\n";
					
					foreach ($emails as $email) {
						$mail = new Mail();
>>

					$message .= '</html>' . "\n";
					
					$this->log->write('emails.list: '.implode(', ', $emails));
					
					foreach ($emails as $email) {
						
						$this->log->write('processing.email: '.$email);
						
						$mail = new Mail();

Share this post


Link to post
Share on other sites

Хотел ещё раз сказать спасибо. 
afwollis, ваш совет помог найти причину ошибки!

Share this post


Link to post
Share on other sites

и это хорошо :-)

только ж - расскажи, в чем проблема была?

Share this post


Link to post
Share on other sites

Хотел ещё раз сказать спасибо. 

afwollis, ваш совет помог найти причину ошибки!

Подскажите, пожалуйста, как решили проблему и какая  была ошибка. (У меня аналогичная проблема, отправляется только 20 писем.)

Share this post


Link to post
Share on other sites

Извините что сразу не написал в продробностях. 

После редактирования файла admin/controller/sale/contact.php как рекомендовал многоуважаемый afwollis в предпоследнем сообщении включил логирование ошибок в настройках сайта и попробовал разослать письма вновь. Выловил вот такую ошибку: 

 

2015-yy-zz 7:32:12 - processing.email: Jain.@.ru
2015-yy-zz 7:32:12 - PHP Notice:  Error: RCPT TO not accepted from server! in /var/www/username/data/www/sitename.com/system/library/mail.php on line 308
 
то есть, email-адрес был некорректный. Как результат - при попытке отправки сообщения почтовый сервер возвращал ошибку. 
 
После этого в разделе "Продажи" -- "Покупатели" -- "Покупатели"  остаётся просто выполнить поиск по Jain.@.ru и либо удалить такого пользователя, либо изменить email на корректный и повторить попытку. 
 
 
Если что-то не получится - пишите, попробую в порядке закрепления изученного материала помочь с этим вопросом. :) 

Share this post


Link to post
Share on other sites

Если что-то не получится - пишите, попробую в порядке закрепления изученного материала помочь с этим вопросом. :)

 

 

Спасибо, получилось найти неправильный e-mail.

Как можно избежать таких ситуаций в дальнейшем?

Share this post


Link to post
Share on other sites

На мой взгляд - искать где на сайте вводятся адреса (страница регистрации, личный кабинет, страница заказа (?) ) и проверять - фильтруются ли в соответствующих полях форм вводимые данные. 
Если нет - фильтровать не давая пользователям (и в идеале - администраторам) писать всякую фигню. 

Share this post


Link to post
Share on other sites

php 5.2+, filter_var()

в ocStore_15412+ все (или почти все) проверки email`ов проходят так (в одном месте через библиотеку ocstore), а не через базовую регулярку оригинального Opencart, раскиданную по всем файлам.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.