/** * Part of the interface which is notified when a message has been sent. * @param Swift_Events_SendEvent */ public function sendPerformed(Swift_Events_SendEvent $e) { $recipients = $e->getRecipients(); $failed = $e->getFailedRecipients(); $it = $recipients->getIterator("to"); while ($it->hasNext()) { $it->next(); $address = $it->getValue(); $pass = !in_array($address->getAddress(), $failed); $this->getView()->paintResult($address->getAddress(), $pass); } $it = $recipients->getIterator("cc"); while ($it->hasNext()) { $it->next(); $address = $it->getValue(); $pass = !in_array($address->getAddress(), $failed); $this->getView()->paintResult($address->getAddress(), $pass); } $it = $recipients->getIterator("bcc"); while ($it->hasNext()) { $it->next(); $address = $it->getValue(); $pass = !in_array($address->getAddress(), $failed); $this->getView()->paintResult($address->getAddress(), $pass); } }
/** * Swift's SendEvent listener. * Invoked when Swift sends a message * @param Swift_Events_SendEvent The event information * @throws Swift_ConnectionException If mail() returns false */ public function sendPerformed(Swift_Events_SendEvent $e) { $message = $e->getMessage(); $recipients = $e->getRecipients(); $to = array(); foreach ($recipients->getTo() as $addr) { if ($this->isWindows()) { $to[] = substr($addr->build(true), 1, -1); } else { $to[] = $addr->build(); } } $to = implode(", ", $to); $bcc_orig = $message->headers->has("Bcc") ? $message->headers->get("Bcc") : null; $subject_orig = $message->headers->has("Subject") ? $message->headers->get("Subject") : null; $to_orig = $message->headers->has("To") ? $message->headers->get("To") : null; $bcc = array(); foreach ($recipients->getBcc() as $addr) { $bcc[] = $addr->build(); } if (!empty($bcc)) { $message->headers->set("Bcc", $bcc); } $bcc = null; $body_data = $message->buildData(); $message_body = $body_data->readFull(); $subject_enc = $message->headers->has("Subject") ? $message->headers->getEncoded("Subject") : ""; $message->headers->set("To", null); $message->headers->set("Subject", null); $sender = $e->getSender(); $this->returnPath = $sender->build(); if ($message->headers->has("Return-Path")) { $this->returnPath = $message->headers->get("Return-Path"); } if (preg_match("~<([^>]+)>[^>]*\$~", $this->returnPath, $matches)) { $this->returnPath = $matches[1]; } $this->doMail($to, $subject_enc, $message_body, $message->headers, sprintf($this->getAdditionalParams(), $this->returnPath)); $message->setLE($this->oldLE); $message->headers->set("To", $to_orig); $message->headers->set("Subject", $subject_orig); $message->headers->set("Bcc", $bcc_orig); }
/** * Called just before Swift sends a message. * We perform operations on the message here. * @param Swift_Events_SendEvent The event object for sending a message */ public function beforeSendPerformed(Swift_Events_SendEvent $e) { $message = $e->getMessage(); $recipients = $e->getRecipients(); $to = array_keys($recipients->getTo()); if (count($to) > 0) { $to = $to[0]; } else { return; } $replacements = (array) $this->replacements->getReplacementsFor($to); $this->store = array("headers" => array(), "body" => false, "children" => array()); $this->recursiveReplace($message, $replacements, $this->store); }