Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[не Решено] Почтовая рассылка незарегистрированным покупателям


Recommended Posts

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

 

1. admin\controller\sale\contact.php
После

					case 'customer_all':
						$customer_data = array(
							'start'  => ($page - 1) * 10,
							'limit'  => 10
						);
									
						$email_total = $this->model_sale_customer->getTotalCustomers($customer_data);
										
						$results = $this->model_sale_customer->getCustomers($customer_data);
				
						foreach ($results as $result) {
							$emails[] = $result['email'];
						}						
						break;

добавить

//////// add all
 
                case 'customer_all_all':
                    $results = $this->model_sale_customer->getAllCustomers();
 
                    foreach ($results as $result) {
                        $emails[] = $result['email'];
                    }                    
                    break;
 
                ////////

после

$this->data['text_customer_all'] = $this->language->get('text_customer_all');

добавить

/// add all
        $this->data['text_customer_all_all'] = $this->language->get('text_customer_all_all');
        ///

2. admin\model\sale\customer.php
После

public function getCustomerByEmail($email) {
        $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer WHERE email = '" . $this->db->escape($email) . "'");
 
        return $query->row;
    }

добавить

/////// add all
 
    public function getAllCustomers($email) {
        $query = $this->db->query("SELECT firstname, lastname, email, telephone, fax, payment_company AS company FROM " . DB_PREFIX . "order");
 
        return $query->row;
    }
 
    ///////

3. admin\language\russian\sale\contact.php

После

$_['text_customer_all']        = 'Все покупатели';[/code]
добавить
[code]/// add all
$_['text_customer_all_all']        = 'В том числе и незарегистрированные';
///

4. admin\view\template\sale\contact.tpl

После

 <option value="customer_all"><?php echo $text_customer_all; ?></option>

добавить

<option value="customer_all_all"><?php echo $text_customer_all_all; ?></option>
  • +1 1
Надіслати
Поділитися на інших сайтах

Вопрос в том, откуда брать е-мейлы незарегистрированных ? у вас есть подписка или какая нибудь форма, которая собирает такие е-мейлы ?

Надіслати
Поділитися на інших сайтах

Информация о покупателях отображается же в панеле управления, статус заказа, детали оплаты, адреса. Разве в БД это не записывается?

Форма оформления заказа есть. Я имею в виду покупателей, которые отказались от регистрации.

Надіслати
Поділитися на інших сайтах

Информация о покупателях отображается же в панеле управления, статус заказа, детали оплаты, адреса. Разве в БД это не записывается?

Форма оформления заказа есть. Я имею в виду покупателей, которые отказались от регистрации.

То есть данные с "гостевых заказов" вытянуть надо ? тогда вопрос 2: "Как различить, кроме как сравнивания с таблицей зарегистрированных пользователей, е-мейлы гостей ?", а то доставаться будут абсолютно все, и то при условии, что при оформлении вводится е-меил.

Надіслати
Поділитися на інших сайтах

В том-то и дело, что абсолютно все нужны. На сайте отсутствует регистрация, а поле email является обязательным при оформлении заказа

Надіслати
Поділитися на інших сайтах

Или:

public function getAllCustomers($email) {        $query = $this->db->query("SELECT DISTINCT * FROM `".DB_PREFIX."order`");         return $query->rows;}

а в контроллере уже вытягивать что надо...

 

Вот так думаю правильней будет...

Змінено користувачем Baco
Надіслати
Поділитися на інших сайтах

1. ну и зачем тебе неиспользуемый аргумент $email в методе, который вызывается БЕЗ аргументов?  :huh: 

2. и возвращать одну (первую) строку результата - как бы это сказать...  :unsure:

Надіслати
Поділитися на інших сайтах

Ошибка в логах Error: RCPT TO not accepted from server!  если прописываю



public function getAllCustomers() {
        $query = $this->db->query("SELECT `firstname`, `email` FROM `".DB_PREFIX."order");
        return $query->rows;
    }

При варианте  $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order");   Добавляется ошибка Uninitialized string offset: 0

Почта на сайте через smpt работает, письма о заказе приходят, обратная связь работает. В БД проверила наличие записей в таблице order, имеются такие firstname  и email

Вопрос: что такое RCPT TO и почему он не принимается от сервера?

Надіслати
Поділитися на інших сайтах

Логи в админке смотрела  Error: RCPT TO not accepted from server! 

При выборе зарегистрированных покупателей рассылка уходит без проблем

Надіслати
Поділитися на інших сайтах

Пишите в лог то, что передается на вход функции mail()

Простите? Не поняла что и куда писать :) Этот код в начале ветки не мой, я такой сама не напишу, хотя понимаю, о чём речь. И ошибку мне в этом найти очень сложно

Надіслати
Поділитися на інших сайтах

Если исключить повторяющиеся адреса эл. почты в записях order, то скрипт срабатывает и почта отправляется

 public function getAllCustomers() {
       $query = $this->db->query("SELECT distinct email FROM " . DB_PREFIX . "order");
       return $query->row;
    }
Надіслати
Поділитися на інших сайтах

Вы были правы, сейчас заработало. По какой-то причине почта не отправлялась, может, кэш мне надо было лучше чистить.

И написать так

public function getAllCustomers() {
        $query = $this->db->query("SELECT distinct `email` FROM `".DB_PREFIX."order`");
        return $query->rows;
    }

Иначе незарегистрированному покупателю, который 5 раз оформил заказ на сайте, будет приходить по 5 одинаковых писем рассылки.

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.