139 \
Magento\Framework\Stdlib\DateTime\DateTime $date,
140 \
Magento\Newsletter\Model\TemplateFactory $templateFactory,
141 \
Magento\Newsletter\Model\ProblemFactory $problemFactory,
143 \
Magento\Newsletter\Model\
Queue\TransportBuilder $transportBuilder,
145 \
Magento\Framework\Data\Collection\AbstractDb $resourceCollection =
null,
156 $this->_templateFilter = $templateFilter;
157 $this->_date = $date;
158 $this->_templateFactory = $templateFactory;
159 $this->_problemFactory = $problemFactory;
160 $this->_subscribersCollection = $subscriberCollectionFactory->create();
161 $this->_transportBuilder = $transportBuilder;
163 TimezoneInterface::class
174 parent::_construct();
185 return $this->getQueueStatus() ===
null;
196 if ($startAt ===
null || $startAt ==
'') {
197 $this->setQueueStartAt(
null);
199 $this->setQueueStartAt($this->timezone->convertConfigTimeToUtc($startAt));
211 public function sendPerSubscriber(
$count = 20)
213 if ($this->getQueueStatus() != self::STATUS_SENDING &&
214 ($this->getQueueStatus() != self::STATUS_NEVER &&
215 $this->getQueueStartAt())
220 if (!$this->_subscribersCollection->getQueueJoinedFlag()) {
221 $this->_subscribersCollection->useQueue($this);
224 if ($this->_subscribersCollection->getSize() == 0) {
229 $collection = $this->_subscribersCollection->useOnlyUnsent()->showCustomerInfo()->setPageSize(
235 $this->_transportBuilder->setTemplateData(
237 'template_subject' => $this->getNewsletterSubject(),
238 'template_text' => $this->getNewsletterText(),
239 'template_styles' => $this->getNewsletterStyles(),
240 'template_filter' => $this->_templateFilter,
241 'template_type' => self::TYPE_HTML,
247 $transport = $this->_transportBuilder->setTemplateOptions(
248 [
'area' => \
Magento\Framework\
App\Area::AREA_FRONTEND,
'store' =>
$item->getStoreId()]
250 [
'subscriber' =>
$item]
252 [
'name' => $this->getNewsletterSenderName(),
'email' => $this->getNewsletterSenderEmail()]
254 $item->getSubscriberEmail(),
255 $item->getSubscriberFullName()
259 $transport->sendMessage();
260 }
catch (\
Magento\Framework\Exception\MailException $e) {
262 $problem = $this->_problemFactory->create();
268 $item->received($this);
284 $this->setQueueFinishAt($this->_date->gmtDate());
285 $this->setQueueStatus(self::STATUS_SENT);
299 $data[
'template_id'] = $this->getTemplateId();
300 $data[
'queue_status'] = $this->getQueueStatus();
301 $data[
'queue_start_at'] = $this->getQueueStartAt();
302 $data[
'queue_finish_at'] = $this->getQueueFinishAt();
314 $this->
_getResource()->addSubscribersToQueue($this, $subscriberIds);
326 $this->_saveStoresFlag = (bool)
$value;
350 $this->_stores = $storesIds;
361 if (!$this->_stores) {
362 $this->_stores = $this->
_getResource()->getStores($this);
375 if ($this->_template ===
null) {
376 $this->_template = $this->_templateFactory->create()->load($this->getTemplateId());
398 return $this->getNewsletterType();
setQueueStartAtByString($startAt)
addSubscribersToQueue(array $subscriberIds)
setSaveStoresFlag($value)
setStores(array $storesIds)
__construct(\Magento\Framework\Model\Context $context, \Magento\Framework\Registry $registry, \Magento\Newsletter\Model\Template\Filter $templateFilter, \Magento\Framework\Stdlib\DateTime\DateTime $date, \Magento\Newsletter\Model\TemplateFactory $templateFactory, \Magento\Newsletter\Model\ProblemFactory $problemFactory, \Magento\Newsletter\Model\ResourceModel\Subscriber\CollectionFactory $subscriberCollectionFactory, \Magento\Newsletter\Model\Queue\TransportBuilder $transportBuilder, \Magento\Framework\Model\ResourceModel\AbstractResource $resource=null, \Magento\Framework\Data\Collection\AbstractDb $resourceCollection=null, array $data=[], TimezoneInterface $timezone=null)