EmailQueue

Очередь писем
Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Автор дополнения
touol
Пакетов
11
Закачек
965
Автор дополнения
Пакетов
11
Закачек
965
Версия 1.2.0-beta
Дата выпуска 17.03.2019
Загрузки 116
Просмотры 4 513
Внимание, этот компонент требует версию PHP 5.3 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
С сайта бывает требуется отсылать много писем. Но многие хостеры ограничивают число писем что можно сразу отправить. Например на одном хостинге можно отправить только 60 писем в минуту. Чтобы обойти это ограничение нужно организовывать очередь писем и отправлять письма частями по, например, 50 штук. Чтобы не писать такую очередь каждый раз когда отправка многих писем нужна в компоненте, написал отдельный компонент что организует такую очередь.

В админке сделано относительно удобное управление очередью.
Для отправки писем из очереди поставите в cron файл core/components/emailqueue/cron/send.php с нужной периодичностью.
Настройки:
emailqueue_limit — сколько писем отправлять за раз.
emailqueue_store_days — сколько дней письма хранить в очереди.
Для помещения писемь в очередь используйте примерно такой код:
if (!$EmailQueue = $modx->getService('emailqueue', 'EmailQueue', $modx->getOption('emailqueue_core_path', null,
	$modx->getOption('core_path') . 'components/emailqueue/') . 'model/emailqueue/', array())) {
	return;
}
$queue_email = $modx->newObject('EmailQueueItem');
$data1 = array(
	'sender_package'=>'UserTest', //дополнение отправитель письма
	'to'=>$invite->user_email, //емаил
	'subject'=>$modx->lexicon('usertest_invite_subject',array('test_name' => $test->name)), // тема письма
	'body'=>$modx->getChunk('tpl.UserTest.InviteEmail',array('test_name' => $test->name,'link'=>$invite->url)), // тело письма
	'date'=>date("Y-m-d H:i:s"), // дата в очереди. Нужно чтоб письма удалялись по истечении срока хранения.
);
if($modx->getOption('usertest_invite_email_from', null, false))
	$data1['from'] = $modx->getOption('usertest_invite_email_from'); //необязательно
if($modx->getOption('usertest_invite_email_from_name', null, false))
	$data1['from_name'] = $modx->getOption('usertest_invite_email_from_name'); //необязательно
$queue_email->fromArray($data1);
if($queue_email->save())
	$modx->log(modX::LOG_LEVEL_INFO,"Приглашение на $email добавлено в очередь писем!");
Дополнительно можно задать:
$queue_email->reply_to // обратный адрес 
$queue_email->attachments //полные имена приклепляемых файлов через запятую

В версии 1.1.0-beta
Сделан более удобный topBar.
Добавлен статус «Отправляется» для для избежания отправки дубликатов писем.
Добавлены хуки EmailQueue и EmailQueueAutoResponder для замены хуков email и FormItAutoResponder в FormIt/AjaxForm.

EmailQueue — Cниппет для drop-in replacement замены хука email для FormIt/AjaxForm
Просто в вызове поменять хук на EmailQueue
EmailQueueAutoResponder — Cниппет для drop-in replacement замены хука FormItAutoResponder для FormIt/AjaxForm
Просто в вызове поменять хук на EmailQueueAutoResponder
[[!Formit?
    &hooks=`EmailQueue,EmailQueueAutoResponder`
    &emailTpl=`feedbackEmail`
    &emailTo=`test@mail.ru`
    &emailSubject=`Сообщение с сайта`
    &replyTo=`[[+email]]`
    &emailFrom=`[[++emailsender]]`
	
    &fiarTpl=`feedbackEmail`
    &fiarSubject=`Сообщение с сайта`
    &fiarReplyTo=`[[+email]]`
    &fiarFrom=`[[++emailsender]]`
]]
Поддержку вложений не делал, т.к. не было необходимости.
И не все параметры FormIt поддерживает (например emailHtml, emailToName, emailCC, итд), т.к. компонент их не учитывает.

На демо сайте логин demo пароль demo

1.2.0-beta

Исправлены опечатки в коде сниппетов. Evgeny Duryagin Исправлено Flat file processor support is deprecated since version 2.7.0.

1.1.1-beta

Исправлены описания.

1.1.0-beta

Сделан более удобный topBar. Добавлен статус "Отправляется" для для избежания отправки дубликатов писем. Добавлены хуки EmailQueue и EmailQueueAutoResponder для замены хуков email и FormItAutoResponder в FormIt/AjaxForm

1.0.5-beta

Исправлена ошибка с типом поля body в php 7.2. phptype="text" заменил на phptype="string"

1.0.4-beta

Добавлена всплывающая подсказка на кнопки. Исправлено отображение даты отправки. Добавлены подписи к параметрам.

1.0.3-beta

Добавлена кнопка очистить все из очереди. Улучшена фильтрация писем. Можно искать по компоненты отправителю, емаил, теме и статусу письма. Исправлен фильтр по статусу.

Последние обсуждения в сообществе MODX.pro