Skip to content

Commit a69ced7

Browse files
committed
Fix sending duplicate emails
1 parent 50f974b commit a69ced7

File tree

4 files changed

+20
-8
lines changed

4 files changed

+20
-8
lines changed

app/code/Magento/Sales/Model/EmailSenderHandler.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,9 @@ public function sendEmails()
6868
if ($this->globalConfig->getValue('sales_email/general/async_sending')) {
6969
$this->entityCollection->addFieldToFilter('send_email', ['eq' => 1]);
7070
$this->entityCollection->addFieldToFilter('email_sent', ['null' => true]);
71+
$this->entityCollection->setPageSize(
72+
$this->globalConfig->getValue('sales_email/general/sending_limit')
73+
);
7174

7275
/** @var \Magento\Sales\Model\AbstractModel $item */
7376
foreach ($this->entityCollection->getItems() as $item) {

app/code/Magento/Sales/etc/adminhtml/system.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,14 @@
132132
<source_model>Magento\Config\Model\Config\Source\Enabledisable</source_model>
133133
<backend_model>Magento\Sales\Model\Config\Backend\Email\AsyncSending</backend_model>
134134
</field>
135+
<field id="sending_limit" translate="label" type="text" sortOrder="2" showInDefault="1" showInWebsite="0" showInStore="0" canRestore="1">
136+
<label>Limit per cron run</label>
137+
<comment>Limit how many entities (orders/shipments/etc) will be processed during one cron run.</comment>
138+
<validate>required-number validate-number validate-greater-than-zero</validate>
139+
<depends>
140+
<field id="async_sending">1</field>
141+
</depends>
142+
</field>
135143
</group>
136144
<group id="order" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="1" showInStore="1">
137145
<label>Order</label>

app/code/Magento/Sales/etc/config.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<sales_email>
3030
<general>
3131
<async_sending>0</async_sending>
32+
<sending_limit>50</sending_limit>
3233
</general>
3334
<order>
3435
<enabled>1</enabled>

app/code/Magento/Sales/etc/di.xml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -348,43 +348,43 @@
348348

349349
<virtualType name="SalesOrderSendEmailsObserver" type="Magento\Sales\Observer\Virtual\SendEmails">
350350
<arguments>
351-
<argument name="emailSenderHandler" xsi:type="object">SalesOrderSendEmails</argument>
351+
<argument name="emailSenderHandler" xsi:type="object" shared="false">SalesOrderSendEmails</argument>
352352
</arguments>
353353
</virtualType>
354354
<virtualType name="SalesOrderInvoiceSendEmailsObserver" type="Magento\Sales\Observer\Virtual\SendEmails">
355355
<arguments>
356-
<argument name="emailSenderHandler" xsi:type="object">SalesOrderInvoiceSendEmails</argument>
356+
<argument name="emailSenderHandler" xsi:type="object" shared="false">SalesOrderInvoiceSendEmails</argument>
357357
</arguments>
358358
</virtualType>
359359
<virtualType name="SalesOrderShipmentSendEmailsObserver" type="Magento\Sales\Observer\Virtual\SendEmails">
360360
<arguments>
361-
<argument name="emailSenderHandler" xsi:type="object">SalesOrderShipmentSendEmails</argument>
361+
<argument name="emailSenderHandler" xsi:type="object" shared="false">SalesOrderShipmentSendEmails</argument>
362362
</arguments>
363363
</virtualType>
364364
<virtualType name="SalesOrderCreditmemoSendEmailsObserver" type="Magento\Sales\Observer\Virtual\SendEmails">
365365
<arguments>
366-
<argument name="emailSenderHandler" xsi:type="object">SalesOrderCreditmemoSendEmails</argument>
366+
<argument name="emailSenderHandler" xsi:type="object" shared="false">SalesOrderCreditmemoSendEmails</argument>
367367
</arguments>
368368
</virtualType>
369369

370370
<virtualType name="SalesOrderSendEmailsCron" type="Magento\Sales\Cron\SendEmails">
371371
<arguments>
372-
<argument name="emailSenderHandler" xsi:type="object">SalesOrderSendEmails</argument>
372+
<argument name="emailSenderHandler" xsi:type="object" shared="false">SalesOrderSendEmails</argument>
373373
</arguments>
374374
</virtualType>
375375
<virtualType name="SalesInvoiceSendEmailsCron" type="Magento\Sales\Cron\SendEmails">
376376
<arguments>
377-
<argument name="emailSenderHandler" xsi:type="object">SalesOrderInvoiceSendEmails</argument>
377+
<argument name="emailSenderHandler" xsi:type="object" shared="false">SalesOrderInvoiceSendEmails</argument>
378378
</arguments>
379379
</virtualType>
380380
<virtualType name="SalesShipmentSendEmailsCron" type="Magento\Sales\Cron\SendEmails">
381381
<arguments>
382-
<argument name="emailSenderHandler" xsi:type="object">SalesOrderShipmentSendEmails</argument>
382+
<argument name="emailSenderHandler" xsi:type="object" shared="false">SalesOrderShipmentSendEmails</argument>
383383
</arguments>
384384
</virtualType>
385385
<virtualType name="SalesCreditmemoSendEmailsCron" type="Magento\Sales\Cron\SendEmails">
386386
<arguments>
387-
<argument name="emailSenderHandler" xsi:type="object">SalesOrderCreditmemoSendEmails</argument>
387+
<argument name="emailSenderHandler" xsi:type="object" shared="false">SalesOrderCreditmemoSendEmails</argument>
388388
</arguments>
389389
</virtualType>
390390
<type name="Magento\SalesSequence\Model\EntityPool">

0 commit comments

Comments
 (0)