Skip to content

Commit 68c9351

Browse files
authored
Added events around Zend_Email (#1438)
1 parent 29dd4b1 commit 68c9351

File tree

5 files changed

+99
-6
lines changed

5 files changed

+99
-6
lines changed

app/code/core/Mage/Core/Model/Email.php

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,8 @@ public function send()
131131
return $this;
132132
}
133133

134-
$mail = new Zend_Mail();
134+
$mail = new Zend_Mail('utf-8');
135+
$transport = new Varien_Object();
135136

136137
if (strtolower($this->getType()) == 'html') {
137138
$mail->setBodyHtml($this->getBody());
@@ -142,7 +143,25 @@ public function send()
142143
$mail->setFrom($this->getFromEmail(), $this->getFromName())
143144
->addTo($this->getToEmail(), $this->getToName())
144145
->setSubject($this->getSubject());
145-
$mail->send();
146+
147+
Mage::dispatchEvent('email_send_before', [
148+
'mail' => $mail,
149+
'template' => $this->getTemplate(),
150+
'transport' => $transport,
151+
'variables' => $this->getTemplateVars()
152+
]);
153+
154+
if ($transport->getTransport()) {
155+
$mail->send($transport->getTransport());
156+
} else {
157+
$mail->send();
158+
}
159+
160+
Mage::dispatchEvent('email_send_after', [
161+
'to' => $this->getToEmail(),
162+
'subject' => $this->getSubject(),
163+
'email_body' => $this->getBody()
164+
]);
146165

147166
return $this;
148167
}

app/code/core/Mage/Core/Model/Email/Queue.php

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,32 @@ public function send()
235235
}
236236

237237
try {
238-
$mailer->send();
238+
$transport = new Varien_Object();
239+
Mage::dispatchEvent('email_queue_send_before', [
240+
'mail' => $mailer,
241+
'message' => $message,
242+
'transport' => $transport
243+
]);
244+
245+
if ($transport->getTransport()) {
246+
$mailer->send($transport->getTransport());
247+
} else {
248+
$mailer->send();
249+
}
250+
239251
unset($mailer);
240252
$message->setProcessedAt(Varien_Date::formatDate(true));
241253
$message->save(); // save() is throwing exception when recipient is not set
254+
255+
foreach ($message->getRecipients() as $recipient) {
256+
list($email, $name, $type) = $recipient;
257+
Mage::dispatchEvent('email_queue_send_after', [
258+
'to' => $email,
259+
'html' => !$parameters->getIsPlain(),
260+
'subject' => $parameters->getSubject(),
261+
'email_body' => $message->getMessageBody()
262+
]);
263+
}
242264
} catch (Exception $e) {
243265
Mage::logException($e);
244266
}

app/code/core/Mage/Core/Model/Email/Template.php

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,30 @@ public function send($email, $name = null, array $variables = [])
459459
$mail->setFrom($this->getSenderEmail(), $this->getSenderName());
460460

461461
try {
462-
$mail->send();
462+
$transport = new Varien_Object();
463+
464+
Mage::dispatchEvent('email_template_send_before', [
465+
'mail' => $mail,
466+
'template' => $this,
467+
'transport' => $transport,
468+
'variables' => $variables
469+
]);
470+
471+
if ($transport->getTransport()) {
472+
$mail->send($transport->getTransport());
473+
} else {
474+
$mail->send();
475+
}
476+
477+
foreach ($emails as $key => $email) {
478+
Mage::dispatchEvent('email_template_send_after', [
479+
'to' => $email,
480+
'html' => !$this->isPlain(),
481+
'subject' => $subject,
482+
'template' => $this->getTemplateId(),
483+
'email_body' => $text
484+
]);
485+
}
463486
$this->_mail = null;
464487
} catch (Exception $e) {
465488
$this->_mail = null;

app/code/core/Mage/Newsletter/Model/Template.php

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,28 @@ public function send($subscriber, array $variables = [], $name = null, Mage_News
328328
$mail->setFrom($this->getTemplateSenderEmail(), $this->getTemplateSenderName());
329329

330330
try {
331-
$mail->send();
331+
$transport = new Varien_Object();
332+
333+
Mage::dispatchEvent('newsletter_send_before', [
334+
'mail' => $mail,
335+
'transport' => $transport,
336+
'template' => $this,
337+
'subscriber' => $subscriber
338+
]);
339+
340+
if ($transport->getTransport()) {
341+
$mail->send($transport->getTransport());
342+
} else {
343+
$mail->send();
344+
}
345+
346+
Mage::dispatchEvent('newsletter_send_after', [
347+
'to' => $email,
348+
'html' => !$this->isPlain(),
349+
'queue' => $queue,
350+
'subject' => $mail->getSubject(),
351+
'email_body' => $text
352+
]);
332353
$this->_mail = null;
333354
if (!is_null($queue)) {
334355
$subscriber->received($queue);

docs/EVENTS.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,12 @@
215215
| customer_registration_is_allowed | 1.9.4.5 |
216216
| customer_session_init | 1.9.4.5 |
217217
| eav_collection_abstract_load_before | 1.9.4.5 |
218+
| email_queue_send_before | 19.4.18 |
219+
| email_queue_send_after | 19.4.18 |
220+
| email_send_before | 19.4.18 |
221+
| email_send_after | 19.4.18 |
222+
| email_template_send_before | 19.4.18 |
223+
| email_template_send_after | 19.4.18 |
218224
| end_index_events_[getEventTypeName] | 1.9.4.5 |
219225
| end_process_event_[getEventTypeName] | 1.9.4.5 |
220226
| gift_options_prepare_items | 1.9.4.5 |
@@ -235,6 +241,8 @@
235241
| model_save_after | 1.9.4.5 |
236242
| model_save_before | 1.9.4.5 |
237243
| model_save_commit_after | 1.9.4.5 |
244+
| newsletter_send_before | 19.4.18 |
245+
| newsletter_send_after | 19.4.18 |
238246
| on_view_report | 1.9.4.5 |
239247
| order_cancel_after | 1.9.4.5 |
240248
| order_status_changed_before_save | 19.5.0 / 20.1.0 |
@@ -361,4 +369,4 @@ class YourNamespace_YourModule_Model_Observer {
361369
public function yourMethod(Varien_Event_Observer $observer) {
362370
$customer = $observer->getData('customer');
363371
}
364-
}
372+
}

0 commit comments

Comments
 (0)