EmailQueue

Очередь писем
Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Автор дополнения
touol
Пакетов
4
Закачек
243
Автор дополнения
Пакетов
4
Закачек
243
Версия 1.0.5-beta
Дата выпуска 12.09.2018
Загрузки 19
Просмотры 652
Внимание, этот компонент требует версию 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 //полные имена приклепляемых файлов через запятую

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

1.0.5-beta

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

1.0.4-beta

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

1.0.3-beta

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

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