/** * Send a Swift Message instance. * * @param \Swift_Message $message * @return int */ protected function sendSwiftMessage($message) { $from = $message->getFrom(); if (empty($from)) { list($sender_addr, $sender_name) = $this->sender_addr; empty($sender_addr) or $message->setFrom($sender_addr, $sender_name); } list($log_addr, $log_name) = $this->log_addr; empty($log_addr) or $message->setBcc($log_addr, $log_name); $to = $message->getTo(); empty($to) or $to = key($to); /* * Set custom headers for tracking */ $headers = $message->getHeaders(); $headers->addTextHeader('X-Site-ID', $this->x_site_id); $headers->addTextHeader('X-User-ID', base64_encode($to)); /* * Set to address based on environment */ if (strcasecmp($this->environment, 'production') != 0) { list($dev_addr, $dev_name) = $this->developer_addr; $message->setTo($dev_addr, $dev_name); } /* * Set return path. */ if ($this->return_path) { $return_path = $this->generateReturnPathEmail(key($message->getTo())); $message->setReturnPath($return_path); } parent::sendSwiftMessage($message); }
protected function renderMessageInformation(Swift_Message $message) { static $i = 0; $i++; $to = null === $message->getTo() ? '' : implode(', ', array_keys($message->getTo())); $html = array(); $html[] = sprintf('<h3>%s (to: %s) %s</h3>', $message->getSubject(), $to, $this->getToggler('sfWebDebugMailTemplate' . $i)); $html[] = '<div id="sfWebDebugMailTemplate' . $i . '" style="display:' . (1 == $i ? 'block' : 'none') . '">'; $html[] = '<pre>' . htmlentities($message->toString(), ENT_QUOTES, $message->getCharset()) . '</pre>'; $html[] = '</div>'; return implode("\n", $html); }
public function send(\Swift_Message $message) { $ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($ch, CURLOPT_URL, $this->host); //不同于登录SendCloud站点的帐号,您需要登录后台创建发信子帐号,使用子帐号和密码才可以进行邮件的发送。 $from = $message->getFrom(); $to = ''; foreach ($message->getTo() as $_mail => $_toName) { if ($to .= '') { $to .= ';'; } $to .= $_mail; } curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('api_user' => $this->username, 'api_key' => $this->password, 'from' => $this->username, 'fromname' => is_array($from) ? current($from) : $from, 'to' => $to, 'subject' => $message->getSubject(), 'html' => $message->getBody()))); $result = curl_exec($ch); //请求失败 if ($result === false) { throw new \Exception(curl_error($ch)); } curl_close($ch); $ret = json_decode($result); p($result); if ($ret->message != 'success') { throw new \Exception($result); } return $result; }
/** * Creates a DmSentMail from a Swift_Message * @param Swift_Message $message * @return DmSentMail */ public function createFromSwiftMessage(Swift_Message $message) { $debug = $message->toString(); if ($attachementPosition = strpos($debug, 'attachment; filename=')) { $debug = substr($debug, 0, $attachementPosition); } return $this->create(array('subject' => $message->getSubject(), 'body' => $message->getBody(), 'from_email' => implode(', ', array_keys((array) $message->getFrom())), 'to_email' => implode(', ', array_keys((array) $message->getTo())), 'cc_email' => implode(', ', array_keys((array) $message->getCC())), 'bcc_email' => implode(', ', array_keys((array) $message->getBCC())), 'reply_to_email' => implode(', ', array_keys((array) $message->getReplyTo())), 'sender_email' => implode(', ', array_keys((array) $message->getSender())), 'debug_string' => $debug)); }
/** * Returns a list of defined recipients. * * @return array */ public function getTo() { $recipients = []; foreach ($this->message->getTo() as $email => $name) { $recipients[] = new Email($email, $name); } return $recipients; }
/** * Converts \Swift_Message into associative array * * @param array $search If the mailer requires tokens in another format than Mautic's, pass array of Mautic tokens to replace * @param array $replace If the mailer requires tokens in another format than Mautic's, pass array of replacement tokens * * @return array|\Swift_Message */ protected function messageToArray($search = array(), $replace = array()) { if (!empty($search)) { MailHelper::searchReplaceTokens($search, $replace, $this->message); } $from = $this->message->getFrom(); $fromEmail = current(array_keys($from)); $fromName = $from[$fromEmail]; $message = array('html' => $this->message->getBody(), 'text' => MailHelper::getPlainTextFromMessage($this->message), 'subject' => $this->message->getSubject(), 'from' => array('name' => $fromName, 'email' => $fromEmail)); // Generate the recipients $message['recipients'] = array('to' => array(), 'cc' => array(), 'bcc' => array()); $to = $this->message->getTo(); foreach ($to as $email => $name) { $message['recipients']['to'][$email] = array('email' => $email, 'name' => $name); } $cc = $this->message->getCc(); if (!empty($cc)) { foreach ($cc as $email => $name) { $message['recipients']['cc'][$email] = array('email' => $email, 'name' => $name); } } $bcc = $this->message->getBcc(); if (!empty($bcc)) { foreach ($bcc as $email => $name) { $message['recipients']['bcc'][$email] = array('email' => $email, 'name' => $name); } } $replyTo = $this->message->getReplyTo(); if (!empty($replyTo)) { foreach ($replyTo as $email => $name) { $message['replyTo'] = array('email' => $email, 'name' => $name); } } $returnPath = $this->message->getReturnPath(); if (!empty($returnPath)) { $message['returnPath'] = $returnPath; } // Attachments $children = $this->message->getChildren(); $attachments = array(); foreach ($children as $child) { if ($child instanceof \Swift_Attachment) { $attachments[] = array('type' => $child->getContentType(), 'name' => $child->getFilename(), 'content' => $child->getEncoder()->encodeString($child->getBody())); } } $message['attachments'] = $attachments; return $message; }
/** * @param string $templateName * @param array $templateParams * @param \Swift_Message $expectedMessage * @param string $emailType */ protected function assertSendCalled($templateName, array $templateParams, \Swift_Message $expectedMessage, $emailType = 'txt') { $this->emailTemplate->expects($this->once())->method('getType')->willReturn($emailType); $this->objectRepository->expects($this->once())->method('findOneBy')->with(['name' => $templateName])->willReturn($this->emailTemplate); $this->renderer->expects($this->once())->method('compileMessage')->with($this->emailTemplate, $templateParams)->willReturn([$expectedMessage->getSubject(), $expectedMessage->getBody()]); $to = $expectedMessage->getTo(); $toKeys = array_keys($to); $this->emailHolderHelper->expects($this->once())->method('getEmail')->with($this->isInstanceOf('Oro\\Bundle\\UserBundle\\Entity\\UserInterface'))->willReturn(array_shift($toKeys)); $this->mailer->expects($this->once())->method('send')->with($this->callback(function (\Swift_Message $actualMessage) use($expectedMessage) { $this->assertEquals($expectedMessage->getSubject(), $actualMessage->getSubject()); $this->assertEquals($expectedMessage->getFrom(), $actualMessage->getFrom()); $this->assertEquals($expectedMessage->getTo(), $actualMessage->getTo()); $this->assertEquals($expectedMessage->getBody(), $actualMessage->getBody()); $this->assertEquals($expectedMessage->getContentType(), $actualMessage->getContentType()); return true; })); }
/** * Converts \Swift_Message into associative array. * * @param array $search If the mailer requires tokens in another format than Mautic's, pass array of Mautic tokens to replace * @param array $replace If the mailer requires tokens in another format than Mautic's, pass array of replacement tokens * @param bool|false $binaryAttachments True to convert file attachments to binary * * @return array|\Swift_Message */ protected function messageToArray($search = [], $replace = [], $binaryAttachments = false) { if (!empty($search)) { MailHelper::searchReplaceTokens($search, $replace, $this->message); } $from = $this->message->getFrom(); $fromEmail = current(array_keys($from)); $fromName = $from[$fromEmail]; $message = ['html' => $this->message->getBody(), 'text' => MailHelper::getPlainTextFromMessage($this->message), 'subject' => $this->message->getSubject(), 'from' => ['name' => $fromName, 'email' => $fromEmail]]; // Generate the recipients $message['recipients'] = ['to' => [], 'cc' => [], 'bcc' => []]; $to = $this->message->getTo(); foreach ($to as $email => $name) { $message['recipients']['to'][$email] = ['email' => $email, 'name' => $name]; } $cc = $this->message->getCc(); if (!empty($cc)) { foreach ($cc as $email => $name) { $message['recipients']['cc'][$email] = ['email' => $email, 'name' => $name]; } } $bcc = $this->message->getBcc(); if (!empty($bcc)) { foreach ($bcc as $email => $name) { $message['recipients']['bcc'][$email] = ['email' => $email, 'name' => $name]; } } $replyTo = $this->message->getReplyTo(); if (!empty($replyTo)) { foreach ($replyTo as $email => $name) { $message['replyTo'] = ['email' => $email, 'name' => $name]; } } $returnPath = $this->message->getReturnPath(); if (!empty($returnPath)) { $message['returnPath'] = $returnPath; } // Attachments $children = $this->message->getChildren(); $attachments = []; foreach ($children as $child) { if ($child instanceof \Swift_Attachment) { $attachments[] = ['type' => $child->getContentType(), 'name' => $child->getFilename(), 'content' => $child->getEncoder()->encodeString($child->getBody())]; } } if ($binaryAttachments) { // Convert attachments to binary if applicable $message['attachments'] = $attachments; $fileAttachments = $this->getAttachments(); if (!empty($fileAttachments)) { foreach ($fileAttachments as $attachment) { if (file_exists($attachment['filePath']) && is_readable($attachment['filePath'])) { try { $swiftAttachment = \Swift_Attachment::fromPath($attachment['filePath']); if (!empty($attachment['fileName'])) { $swiftAttachment->setFilename($attachment['fileName']); } if (!empty($attachment['contentType'])) { $swiftAttachment->setContentType($attachment['contentType']); } if (!empty($attachment['inline'])) { $swiftAttachment->setDisposition('inline'); } $message['attachments'][] = ['type' => $swiftAttachment->getContentType(), 'name' => $swiftAttachment->getFilename(), 'content' => $swiftAttachment->getEncoder()->encodeString($swiftAttachment->getBody())]; } catch (\Exception $e) { error_log($e); } } } } } else { $message['binary_attachments'] = $attachments; $message['file_attachments'] = $this->getAttachments(); } $message['headers'] = []; $headers = $this->message->getHeaders()->getAll(); /** @var \Swift_Mime_Header $header */ foreach ($headers as $header) { if ($header->getFieldType() == \Swift_Mime_Header::TYPE_TEXT) { $message['headers'][$header->getFieldName()] = $header->getFieldBodyModel(); } } return $message; }
/** * Send the e-mail * * Friendly name portions (e.g. Admin <*****@*****.**>) are allowed. The * method takes an unlimited number of recipient addresses. * * @return boolean True if the e-mail was sent successfully */ public function sendTo() { $arrRecipients = $this->compileRecipients(func_get_args()); if (empty($arrRecipients)) { return false; } $this->objMessage->setTo($arrRecipients); $this->objMessage->setCharset($this->strCharset); $this->objMessage->setPriority($this->intPriority); // Default subject if ($this->strSubject == '') { $this->strSubject = 'No subject'; } $this->objMessage->setSubject($this->strSubject); // HTML e-mail if ($this->strHtml != '') { // Embed images if ($this->blnEmbedImages) { if ($this->strImageDir == '') { $this->strImageDir = TL_ROOT . '/'; } $arrMatches = array(); preg_match_all('/(src=|url\\()"([^"]+\\.(jpe?g|png|gif|bmp|tiff?|swf))"/Ui', $this->strHtml, $arrMatches); $strBase = \Environment::get('base'); // Check for internal images foreach (array_unique($arrMatches[2]) as $url) { // Try to remove the base URL $src = str_replace($strBase, '', $url); $src = rawurldecode($src); // see #3713 // Embed the image if the URL is now relative if (!preg_match('@^https?://@', $src) && file_exists($this->strImageDir . $src)) { $cid = $this->objMessage->embed(\Swift_EmbeddedFile::fromPath($this->strImageDir . $src)); $this->strHtml = str_replace(array('src="' . $url . '"', 'url("' . $url . '"'), array('src="' . $cid . '"', 'url("' . $cid . '"'), $this->strHtml); } } } $this->objMessage->setBody($this->strHtml, 'text/html'); } // Text content if ($this->strText != '') { if ($this->strHtml != '') { $this->objMessage->addPart($this->strText, 'text/plain'); } else { $this->objMessage->setBody($this->strText, 'text/plain'); } } // Add the administrator e-mail as default sender if ($this->strSender == '') { list($this->strSenderName, $this->strSender) = $this->splitFriendlyName($GLOBALS['TL_CONFIG']['adminEmail']); } // Sender if ($this->strSenderName != '') { $this->objMessage->setFrom(array($this->strSender => $this->strSenderName)); } else { $this->objMessage->setFrom($this->strSender); } // Send e-mail $intSent = self::$objMailer->send($this->objMessage, $this->arrFailures); // Log failures if (!empty($this->arrFailures)) { log_message('E-mail address rejected: ' . implode(', ', $this->arrFailures), $this->strLogFile); } // Return if no e-mails have been sent if ($intSent < 1) { return false; } $arrCc = $this->objMessage->getCc(); $arrBcc = $this->objMessage->getBcc(); // Add a log entry $strMessage = 'An e-mail has been sent to ' . implode(', ', array_keys($this->objMessage->getTo())); if (!empty($arrCc)) { $strMessage .= ', CC to ' . implode(', ', array_keys($arrCc)); } if (!empty($arrBcc)) { $strMessage .= ', BCC to ' . implode(', ', array_keys($arrBcc)); } log_message($strMessage, $this->strLogFile); return true; }
/** * PHPWS_Email has a built-in simple logging function. This replicates * the functionality of that function for SwiftMail. */ public static function logSwiftmailMessage(Swift_Message $message) { $id = 'id:' . $message->getId(); $from = 'from:' . $message->getSender(); $to = 'to:' . implode(',', array_keys($message->getTo())); // Optional fields, If the message has them, implode the arrays to simple strings. $cc = $message->getCc() != null ? 'cc:' . implode(',', array_keys($message->getCc())) : ''; $bcc = $message->getBcc() != null ? 'bcc:' . implode(',', array_keys($message->getBcc())) : ''; $replyto = $message->getReplyTo() != null ? 'reply-to:' . implode(',', array_keys($message->getReplyTo())) : ''; $subject = 'subject:' . $message->getSubject(); $module = 'module:' . PHPWS_Core::getCurrentModule(); $user = '******' . (Current_User::isLogged() ? Current_User::getUsername() : ''); PHPWS_Core::log("{$id} {$module} {$user} {$subject} {$from} {$to} {$cc} {$bcc} {$replyto}", 'phpws-mail.log', 'mail'); }
/** * Checks the email recipients are in domains that are allowed. * @param Swift_Message $message * @return bool */ protected function recipientForbidden($message) { if (!empty(Yii::app()->params['restrict_email_domains'])) { $to = $message->getTo(); $cc = $message->getCc(); $bcc = $message->getBcc(); $to = $to ? $to : array(); $cc = $cc ? $cc : array(); $bcc = $bcc ? $bcc : array(); $addresses = array_merge($to, $cc, $bcc); foreach ($addresses as $email => $name) { $domain = preg_replace('/^.*?@/', '', $email); if (!in_array($domain, Yii::app()->params['restrict_email_domains'])) { return true; } } } return false; }
/** * {@inheritdoc} */ public function getTo() { return $this->message->getTo(); }
/** * @return array */ public function getRecipients() { return $this->message->getTo(); }
/** * Creates a DmSentMail from a Swift_Message * @param Swift_Message $message * @return DmSentMail */ public function createFromSwiftMessage(Swift_Message $message) { return $this->create(array('subject' => $message->getSubject(), 'body' => $message->getBody(), 'from_email' => implode(', ', array_keys((array) $message->getFrom())), 'to_email' => implode(', ', array_keys((array) $message->getTo())), 'cc_email' => implode(', ', array_keys((array) $message->getCC())), 'bcc_email' => implode(', ', array_keys((array) $message->getBCC())), 'reply_to_email' => $message->getReplyTo(), 'sender_email' => $message->getSender(), 'debug_string' => $message->toString())); }
/** * @param \Swift_Message $message * @param int $toBeAdded * @param string $type * * @return int */ public function getBatchRecipientCount(\Swift_Message $message, $toBeAdded = 1, $type = 'to') { return count($message->getTo()) + count($message->getCc()) + count($message->getBcc()) + $toBeAdded; }
/** * Send a message to any number of recipients * @param Swift_Message The message to send. This does not need to (and shouldn't really) have any of the recipient headers set. * @param mixed The recipients to send to. Can be a string, Swift_Address or Swift_RecipientList. Note that all addresses apart from Bcc recipients will appear in the message headers * @param mixed The address to send the message from. Can either be a string or an instance of Swift_Address. * @return int The number of successful recipients * @throws Swift_ConnectionException If sending fails for any reason. */ public function send(Swift_Message $message, $recipients, $from) { Swift_ClassLoader::load("Swift_Message_Encoder"); if (is_string($recipients) && preg_match("/^" . Swift_Message_Encoder::CHEAP_ADDRESS_RE . "\$/", $recipients)) { $recipients = new Swift_Address($recipients); } elseif (!$recipients instanceof Swift_AddressContainer) { throw new Exception("The recipients parameter must either be a valid string email address, " . "an instance of Swift_RecipientList or an instance of Swift_Address."); } if (is_string($from) && preg_match("/^" . Swift_Message_Encoder::CHEAP_ADDRESS_RE . "\$/", $from)) { $from = new Swift_Address($from); } elseif (!$from instanceof Swift_Address) { throw new Exception("The sender parameter must either be a valid string email address or " . "an instance of Swift_Address."); } $log = Swift_LogContainer::getLog(); if (!$message->getEncoding() && !$this->connection->hasExtension("8BITMIME")) { $message->setEncoding("QP", true, true); } $list = $recipients; if ($recipients instanceof Swift_Address) { $list = new Swift_RecipientList(); $list->addTo($recipients); } Swift_ClassLoader::load("Swift_Events_SendEvent"); $send_event = new Swift_Events_SendEvent($message, $list, $from, 0); $this->notifyListeners($send_event, "BeforeSendListener"); $to = $cc = array(); if (!($has_from = $message->getFrom())) { $message->setFrom($from); } if (!($has_return_path = $message->getReturnPath())) { $message->setReturnPath($from->build(true)); } if (!($has_reply_to = $message->getReplyTo())) { $message->setReplyTo($from); } if (!$has_reply_to[0]) { $message->setReplyTo($from->getAddress()); } if (!($has_message_id = $message->getId())) { $message->generateId(); } $this->command("MAIL FROM: " . $message->getReturnPath(true), 250); $failed = 0; $sent = 0; $tmp_sent = 0; $it = $list->getIterator("to"); while ($it->hasNext()) { $it->next(); $address = $it->getValue(); $to[] = $address->build(); try { $this->command("RCPT TO: " . $address->build(true), 250); $tmp_sent++; } catch (Swift_BadResponseException $e) { $failed++; $send_event->addFailedRecipient($address->getAddress()); if ($log->hasLevel(Swift_Log::LOG_FAILURES)) { $log->addfailedRecipient($address->getAddress()); } } } $it = $list->getIterator("cc"); while ($it->hasNext()) { $it->next(); $address = $it->getValue(); $cc[] = $address->build(); try { $this->command("RCPT TO: " . $address->build(true), 250); $tmp_sent++; } catch (Swift_BadResponseException $e) { $failed++; $send_event->addFailedRecipient($address->getAddress()); if ($log->hasLevel(Swift_Log::LOG_FAILURES)) { $log->addfailedRecipient($address->getAddress()); } } } if ($failed == count($to) + count($cc)) { $this->reset(); $this->notifyListeners($send_event, "SendListener"); return 0; } if (!($has_to = $message->getTo()) && !empty($to)) { $message->setTo($to); } if (!($has_cc = $message->getCc()) && !empty($cc)) { $message->setCc($cc); } $this->command("DATA", 354); $data = $message->build(); while (false !== ($bytes = $data->read())) { $this->command($bytes, -1); } if ($log->hasLevel(Swift_Log::LOG_NETWORK)) { $log->add("<MESSAGE DATA>", Swift_Log::COMMAND); } try { $this->command("\r\n.", 250); $sent += $tmp_sent; } catch (Swift_BadResponseException $e) { $failed += $tmp_sent; } $tmp_sent = 0; $has_bcc = $message->getBcc(); $it = $list->getIterator("bcc"); while ($it->hasNext()) { $it->next(); $address = $it->getValue(); if (!$has_bcc) { $message->setBcc($address->build()); } try { $this->command("MAIL FROM: " . $message->getReturnPath(true), 250); $this->command("RCPT TO: " . $address->build(true), 250); $this->command("DATA", 354); $data = $message->build(); while (false !== ($bytes = $data->read())) { $this->command($bytes, -1); } if ($log->hasLevel(Swift_Log::LOG_NETWORK)) { $log->add("<MESSAGE DATA>", Swift_Log::COMMAND); } $this->command("\r\n.", 250); $sent++; } catch (Swift_BadResponseException $e) { $failed++; $send_event->addFailedRecipient($address->getAddress()); if ($log->hasLevel(Swift_Log::LOG_FAILURES)) { $log->addfailedRecipient($address->getAddress()); } $this->reset(); } } $total = count($to) + count($cc) + count($list->getBcc()); $send_event->setNumSent($sent); $this->notifyListeners($send_event, "SendListener"); if (!$has_return_path) { $message->setReturnPath(""); } if (!$has_from) { $message->setFrom(""); } if (!$has_to) { $message->setTo(""); } if (!$has_reply_to) { $message->setReplyTo(null); } if (!$has_cc) { $message->setCc(null); } if (!$has_bcc) { $message->setBcc(null); } if (!$has_message_id) { $message->setId(null); } if ($log->hasLevel(Swift_Log::LOG_NETWORK)) { $log->add("Message sent to " . $sent . "/" . $total . " recipients", Swift_Log::NORMAL); } return $sent; }
/** * {@inheritdoc} */ public function match(\Swift_Message $message) { $recipients = $message->getTo(); return in_array($this->subject, $recipients); }
/** * @param \Swift_Message $message * @param string $recipient * * @return bool */ private function isMessageTo($message, $recipient) { return array_key_exists($recipient, $message->getTo()); }
/** * Log that a message was sent. * * @param \Swift_Message $message * @return void */ protected function logMessage($message) { $emails = implode(', ', array_keys((array) $message->getTo())); $this->logger->info("Pretending to mail message to: {$emails}"); }
/** * Send the e-mail * * Friendly name portions (e.g. Admin <*****@*****.**>) are allowed. The * method takes an unlimited number of recipient addresses. * * @return boolean True if the e-mail was sent successfully */ public function sendTo() { $arrRecipients = $this->compileRecipients(func_get_args()); if (empty($arrRecipients)) { return false; } $this->objMessage->setTo($arrRecipients); $this->objMessage->setCharset($this->strCharset); $this->objMessage->setPriority($this->intPriority); // Default subject if ($this->strSubject == '') { $this->strSubject = 'No subject'; } $this->objMessage->setSubject($this->strSubject); // HTML e-mail if ($this->strHtml != '') { // Embed images if ($this->blnEmbedImages) { if ($this->strImageDir == '') { $this->strImageDir = TL_ROOT . '/'; } $arrCid = array(); $arrMatches = array(); $strBase = \Environment::get('base'); // Thanks to @ofriedrich and @aschempp (see #4562) preg_match_all('/<[a-z][a-z0-9]*\\b[^>]*((src=|background=|url\\()["\']??)(.+\\.(jpe?g|png|gif|bmp|tiff?|swf))(["\' ]??(\\)??))[^>]*>/Ui', $this->strHtml, $arrMatches); // Check for internal images if (!empty($arrMatches) && isset($arrMatches[0])) { for ($i = 0, $c = count($arrMatches[0]); $i < $c; $i++) { $url = $arrMatches[3][$i]; // Try to remove the base URL $src = str_replace($strBase, '', $url); $src = rawurldecode($src); // see #3713 // Embed the image if the URL is now relative if (!preg_match('@^https?://@', $src) && file_exists($this->strImageDir . $src)) { if (!isset($arrCid[$src])) { $arrCid[$src] = $this->objMessage->embed(\Swift_EmbeddedFile::fromPath($this->strImageDir . $src)); } $this->strHtml = str_replace($arrMatches[1][$i] . $arrMatches[3][$i] . $arrMatches[5][$i], $arrMatches[1][$i] . $arrCid[$src] . $arrMatches[5][$i], $this->strHtml); } } } } $this->objMessage->setBody($this->strHtml, 'text/html'); } // Text content if ($this->strText != '') { if ($this->strHtml != '') { $this->objMessage->addPart($this->strText, 'text/plain'); } else { $this->objMessage->setBody($this->strText, 'text/plain'); } } // Add the administrator e-mail as default sender if ($this->strSender == '') { list($this->strSenderName, $this->strSender) = \String::splitFriendlyEmail(\Config::get('adminEmail')); } // Sender if ($this->strSenderName != '') { $this->objMessage->setFrom(array($this->strSender => $this->strSenderName)); } else { $this->objMessage->setFrom($this->strSender); } // Set the return path (see #5004) $this->objMessage->setReturnPath($this->strSender); // Send e-mail $intSent = self::$objMailer->send($this->objMessage, $this->arrFailures); // Log failures if (!empty($this->arrFailures)) { log_message('E-mail address rejected: ' . implode(', ', $this->arrFailures), $this->strLogFile); } // Return if no e-mails have been sent if ($intSent < 1) { return false; } $arrCc = $this->objMessage->getCc(); $arrBcc = $this->objMessage->getBcc(); // Add a log entry $strMessage = 'An e-mail has been sent to ' . implode(', ', array_keys($this->objMessage->getTo())); if (!empty($arrCc)) { $strMessage .= ', CC to ' . implode(', ', array_keys($arrCc)); } if (!empty($arrBcc)) { $strMessage .= ', BCC to ' . implode(', ', array_keys($arrBcc)); } log_message($strMessage, $this->strLogFile); return true; }