Beispiel #1
0
 /**
  * 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);
 }