Форум русской поддержки Joomla!® CMS
26.03.2017, 07:36:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

[FAQ] Автоматическая почтовая рассылка материалов с помощью AcyMailing

 (Прочитано 58327 раз)
0 Пользователей и 1 Гость смотрят эту тему.
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« : 27.07.2011, 14:08:34 »

Уважаемые форумчане, подскажите решение вопросика:

Есть Joomla 1.6 + компонент AcyMailing 2.0

Нужно сделать, чтобы при создании материала, в определенном разделе происходила отправка писем всем подписчикам.
Как сделать рассылку понятно, но вот как привязать её к событию создания материала, да еще и в определенном разделе, ума не приложу.
« Последнее редактирование: 29.08.2013, 09:58:20 от b2z » Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #1 : 27.07.2011, 17:45:55 »

Идея как это реализовать появилась, но смутная.

Решил написать плагин, который при добавлении материала выдергивал бы нужные поля этого материала и передавал бы в компонент AcyMailing для отправки рассылки.

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

Код:
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.plugin.helper');

class plgContentSendacymailing extends JPlugin
{

function __construct(&$subject)
{
parent::__construct($subject);
  }

  function onAfterContentSave(){
die('content saving');
  }

}
?>

Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #2 : 28.07.2011, 02:03:50 »

Какие тут все не общительные однако...

Буду писать что делал и что из этого вышло, может пригодится кому в будущем.

Решение проблемы с запуском плагина нашел: в 1.6 изменили название событий и вместо
Код:
onAfterContentSave
стало
Код:
onContentAfterSave

Пишем тело плагина...
Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #3 : 28.07.2011, 13:38:16 »

Завис на следующей проблеме. Не отправляется письмо с помощью компонента AcyMailing.

Код плагина теперь такой:
Код:
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');

class plgContentSendacymailing extends JPlugin
{

function __construct(&$subject)
{parent::__construct($subject);}

function onContentAfterSave($context, &$article, $isNew){
if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return true;
if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'mailer.php')) return true;
if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'classes'.DS.'listmail.php')) return true;
$mailer = new mailerHelper();
$mailer->Subject = $article->title;
$mailer->Body = $article->introtext;
$mailer->to[] = 'user@domain.com';
$mailer->send();
echo $mailer->reportMessage;
echo $mailer->errorNumber;
die('content saving event catched');
    }


}
?>

Причем       
Код:
echo $mailer->reportMessage;
Выдает сообщение об успешной отправке.
Думал, что проблема с настройкой компонента, но и в компоненте твориться что-то странное:
При отправке тестового письма из окна настроек все проходит отлично. Письмо отправляется и доходит практически моментально. А если создать новое сообщение и отправить тестовое письмо для этого сообщения, то начинается полтергейст: компонент сообщает об успешной отправке, но ничего на почту не приходит. То же самое, если запустить это сообщение в рассылку. Успешный отчет при нулевом результате. Кто-нибудь с таким сталкивался?
Записан
b2z
Support Team
*****

Репутация: +723/-0
Offline Offline

Пол: Мужской
Сообщений: 7627


Разраблю понемногу


« Ответ #4 : 28.07.2011, 15:30:28 »

Может это баг? Попробуйте в компоненте отдебажить в $mailer->send()
Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #5 : 28.07.2011, 15:56:55 »

Уже.

Есть такой класс:
/components/com_acymailing/inc/phpmailer/class.phpmailer.php
Который отвечает за отправку почты компонентом Acymailing. До него данные доходят, передаются в PHP функцию mail() и  результат всегда TRUE, значит письмо ушло. Но из одного места письма доходят, а из другого нет. Проверял входные данные, все в порядке.

Ничего не понимаю.
Записан
b2z
Support Team
*****

Репутация: +723/-0
Offline Offline

Пол: Мужской
Сообщений: 7627


Разраблю понемногу


« Ответ #6 : 28.07.2011, 17:57:11 »

Чудеса, да и только... Ну пробуйте сами используя mail() чего нибудь отправить.
Записан
Magi
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 108


« Ответ #7 : 29.07.2011, 16:31:08 »

У меня есть пример хака для Joomla 1.0.x с помощью которого почта отправляется на адрес списка рассылки mailman, а потом соответственно подписчикам. Если интересует могу выложить.
Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #8 : 29.07.2011, 16:40:18 »

У меня есть пример хака для Joomla 1.0.x с помощью которого почта отправляется на адрес списка рассылки mailman, а потом соответственно подписчикам. Если интересует могу выложить.

Да, было бы замечательно.
Записан
Magi
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 108


« Ответ #9 : 30.07.2011, 01:02:07 »

Если получится переделать под 1.7 выложите здесь.

1. Положить в корень ЦМС файл for_mail.php.
2. В корне ЦМС открываем файл index2.php и после строки
require_once( 'includes/joomla.php' );
вставляем
require_once( 'for_mail.php' );
3. В дире administrator в файле index2.php после строки
require_once( '../configuration.php' );
вставляем
require_once( '../for_mail.php' );
4. В дире components/com_content открываем файл content.php и ищем строку
if (!$row->store()) {
и после закрывающей '}' вставляем строку
SendNewsMail($row->id);
5. В дире administrator/components/com_content открываем файл
admin.content.php и ищем строку
if (!$row->store()) {
и после закрывающей '}' вставляем строку
SendNewsMail($row->id);

[вложение удалено Администратором]
Записан
WolfHunter
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 50


« Ответ #10 : 19.10.2011, 22:49:31 »

Идея как это реализовать появилась, но смутная.

Решил написать плагин......

какой плагин?! вы чё?!
есть такая штука называется тэги. например этот: {autocontent:cat1-|min:1|max:5|order:id,DESC|filter:created|type:intro|link|pict:1}
из категории 1 тащит статьи от 1 и до 5, сортировка по ID, только новые, только вступление, активный заголовок, показывать изображения.
ВСЁ! что еще надо хорошему человеку )))))

P.S. ну и естественно нужна Business или enterprise версия, для настройки крон
Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #11 : 19.10.2011, 23:44:48 »

А для тех, кто не готов раскошеливаться на бизнес или энтерпрайз версии готов поделиться плагином:)

Код:
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');

class plgContentSendacymailing extends JPlugin
{
function __construct(&$subject) {parent::__construct($subject);}

function onContentAfterSave($context, &$article, $isNew){
if($isNew) { //проверяем запись и если она новая, запускаем процедуру формирования и отправки письма
if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'mailer.php')) return true;
$db =& JFactory::getDBO(); //получаем соединение с БД
$query = 'SELECT subid, email, name FROM [JOOMLA_TABLE_PREFIX]_acymailing_subscriber WHERE enabled = 1'; // делаем запрос для получения всех активных подписчиков
$db->setQuery($query); //выполняем запрос
$db->query();
$allSubid = $db->loadRowList(); //получаем результаты запроса
$mailer = new mailerHelper();
$mailer->Subject = $article->title; //заполняем тему письма
$mailer->Body = $article->introtext; //заполняем текст письма
$to = array(); //заполняем получателей
foreach($allSubid as $subscriber) {
$mailer->to[] = array($subscriber[2],$subscriber[1]);
}
$mailer->send(); //отправляем письмо
}


    }
}
?>

Плагин максимально простой с минимумом наворотов. Не подходит для большого количества адресатов.
Нарастить функционал очень просто, поэтому, если есть желающие, милости просим заняться этим вопросом и поделиться результатами.
Записан
WolfHunter
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 50


« Ответ #12 : 20.10.2011, 00:51:53 »

Это для тех у кого нет денег и в то же время из принципа не хочет пользоваться.... ну, это..... уже бесплатным
Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #13 : 20.10.2011, 01:04:04 »

А также для тех, у кого нет крона или он не знает что это такое:)
Записан
Magi
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 108


« Ответ #14 : 20.10.2011, 08:39:36 »

Плагин вроде подразумевает наличие XML файла. А как ставить этот?
Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #15 : 20.10.2011, 08:53:00 »

я сделал самый примитивный вариант. Выглядит примерно так:
Код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install SYSTEM "http://dev.joomla.org/xml/1.5/plugin-install.dtd">
<install type="plugin" version="1.5" group="content">
<name>AcyMailing : (auto)Sending articles</name>
<creationDate>07 2011</creationDate>
<version>1.0</version>
<author>IT-Nanny</author>
<authorEmail>web@it-nanny.ru</authorEmail>
<authorUrl>http://www.it-nanny.ru</authorUrl>
<copyright>Copyright (C) 2011 IT-Nanny.</copyright>
<description>Automatically sending e-mail with Article add</description>
<files>
<filename plugin="sendacymailing">sendacymailing.php</filename>
</files>

</install>
Записан
WolfHunter
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 50


« Ответ #16 : 20.10.2011, 18:32:02 »

А также для тех, у кого нет крона
а чё, такое бывает?
Записан
Лидиан
Гость
« Ответ #17 : 21.10.2011, 14:32:54 »

Подскажите, как оптимизировать процесс отправки писем, у меня отправляется всего 300 писем в час.
Когда создаю сообщение, делаю его отправить, он отправляет на все 9000 адресов, НО! они не доходят. Посмотрела обработку очереди, там стоит что 300 писем в час. Я так понимаю, что они зависают на сервере.
Как сделать так, что отправлял сразу все и они нормально доставлялись?
Спасибо за ответ!
Записан
FerrumLogic
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 213


Я ушел чтобы с разбегу вернуться


« Ответ #18 : 21.10.2011, 15:06:56 »

С такой скоростью рассылки Вас добавят в спам-листы
Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #19 : 21.10.2011, 16:57:09 »

В таком случае нужно использовать очереди отправки компонента AcyMailing, либо придумывать что-то своё.
Записан
WolfHunter
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 50


« Ответ #20 : 21.10.2011, 18:11:48 »

С такой скоростью рассылки Вас добавят в спам-листы
сто пудов. надо максимум 300
у меня в настройках:
Послать  сообщений 100 и перед отправкой следующего пакета сообщений ждать 5 мин
с такой же настройкой ваши 9000 писем разошлются за 7.5 часов
Записан
неон
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 37


« Ответ #21 : 21.01.2012, 18:37:46 »

Подскажите кто знает как в этом компоненте настраивается функция  -Отказаться от рассылки писем:-
Записан
WolfHunter
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 50


« Ответ #22 : 21.01.2012, 19:06:28 »

не понял вопроса.
пользователь жмёт кнопочку и там выбирает от каких рассылок отказаться
Записан
неон
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 37


« Ответ #23 : 21.01.2012, 21:16:53 »

Данный компонента я использую только для рассылки писем зарегистрировавшимся пользователям (типа пора зайти и посмотреть что нового на сайте) Использую стандартный шаблон компонента немного переделаны под себя. В шаблоне есть активная ссылка на отказ от рассылки, при нажатии перекидывает на сайт и на этом все.Мне кажется в настройках компонента надо поставить какую та ссылку на удаления рассылки. Но где ее взять и куда поставить ума не приложу.
Записан
WolfHunter
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 50


« Ответ #24 : 21.01.2012, 22:42:13 »

Теперь понятно
Конфигурация->Интерфейсы->Страница отказа от подписки
у меня так


думаю больше ничего не нужно
Записан
WolfHunter
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 50


« Ответ #25 : 21.01.2012, 22:46:00 »

ссылка должна быть типо этой
http://сайт.ru/index.php?option=com_acymailing&ctrl=user&task=optout&mailid=38&subid=1983&key=4aa970e08fe0a8ad298b70a0b1586965&Itemid=71
и при отказе появляется вот это
Записан
неон
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 37


« Ответ #26 : 21.01.2012, 22:51:30 »

Спасибо, разобрался.
+
Записан
cat_helena
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 1


« Ответ #27 : 15.02.2012, 15:19:44 »

Уже.

Есть такой класс:
/components/com_acymailing/inc/phpmailer/class.phpmailer.php
Который отвечает за отправку почты компонентом Acymailing. До него данные доходят, передаются в PHP функцию mail() и  результат всегда TRUE, значит письмо ушло. Но из одного места письма доходят, а из другого нет. Проверял входные данные, все в порядке.

Ничего не понимаю.
Скажите, как разобрались с доставкой писем. У меня сейчас та же прблема.
Записан
malkawian
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Пол: Мужской
Сообщений: 21



« Ответ #28 : 15.02.2012, 15:25:16 »

Скажите, как разобрались с доставкой писем. У меня сейчас та же прблема.

http://joomlaforum.ru/index.php/topic,172873.msg978008.html#msg978008
Записан
AnDS
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 10


« Ответ #29 : 20.08.2012, 16:52:12 »

Хочу сделать автоматическую рассылку, в настройках (Конфигурация--Обработка очереди) отображается сообщение: "Вероятно планировщик не включен, не забудьте его создать!"

Подскажите, как создать планировщик?
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet