private function setCharset() { if (!($charset = $this->mail->charset)) { $charset = mb_detect_encoding($this->mail->subject); if (!$charset) { $charset = null; } } $this->message->setEncoding($charset); }
private function sendMail($messageBody, $subject) { $message = new \Zend\Mail\Message(); $message->setEncoding('utf-8'); $message->setBody($messageBody); $message->addTo('*****@*****.**'); $message->setSubject($subject); $message->setFrom('*****@*****.**'); $transport = new \Zend\Mail\Transport\Sendmail(); if (APPLICATION_ENV == 'production') { $transport->send($message); } return true; }
public function message($error, $typestr) { $currentDate = new \DateTime('now'); $configEmail = $this->getConfigEmail(); $configSend = $configEmail['send']; $from = $configSend['from']; $subject = $configSend['subject']; $to = $configSend['to']; $message = new \Zend\Mail\Message(); $message->setFrom($from); foreach ($to as $emailTo) { $message->addTo($emailTo); } $message->setSubject($subject . ' - ' . $typestr); $errorMessage = "Host => " . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] . "\n" . "IP Request => " . $_SERVER['REMOTE_ADDR'] . "\n" . "Date => " . $currentDate->format('Y-m-d H:i') . "\n " . $error; $message->setBody($errorMessage); $message->setEncoding("UTF-8"); return $message; }
/** * @see \BoilerAppMessenger\Message\MessageTransporterInterface::sendMessage() * @param \BoilerAppMessenger\Message\Message $oMessage * @throws \UnexpectedValueException * @return \BoilerAppMessenger\Media\Mail\MailMessageTransporter */ public function sendMessage(\BoilerAppMessenger\Message\Message $oMessage) { //Adapt message $oAdaptedMessage = new \Zend\Mail\Message(); $oAdaptedMessage->setEncoding('UTF-8'); //From Sender $oFrom = $oMessage->getFrom(); if ($oFrom instanceof \BoilerAppMessenger\Media\Mail\MailMessageUserInterface) { $oAdaptedMessage->setFrom($oFrom->getUserEmail(), $oFrom->getUserDisplayName()); } else { throw new \UnexpectedValueException(sprintf('"From" sender expects an instance of \\BoilerAppMessenger\\Mail\\MailMessageUserInterface, "%s" given', is_scalar($oFrom) ? $oFrom : (is_object($oFrom) ? get_class($oFrom) : gettype($oFrom)))); } //To Recipiants foreach ($oMessage->getTo() as $oTo) { if ($oTo instanceof \BoilerAppMessenger\Media\Mail\MailMessageUserInterface) { $oAdaptedMessage->addTo($oTo->getUserEmail(), $oTo->getUserDisplayName()); } else { throw new \UnexpectedValueException(sprintf('"To" Recipiant expects an instance of \\BoilerAppMessenger\\Mail\\MailMessageUserInterface, "%s" given', is_scalar($oTo) ? $oTo : (is_object($oTo) ? get_class($oTo) : gettype($oTo)))); } } //Subject $oAdaptedMessage->setSubject($oMessage->getSubject()); //Reset attachments $this->attachments = array(); foreach ($oMessage->getAttachments() as $sAttachmentFilePath) { $this->addFileAttachment($sAttachmentFilePath); } //Body $oBodyPart = new \Zend\Mime\Part(preg_replace_callback('/src="([^"]+)"/', array($this, 'processImageSrc'), $this->getMessageRenderer()->renderMessageBody($oMessage))); $oBodyPart->type = \Zend\Mime\Mime::TYPE_HTML; $oBody = new \Zend\Mime\Message(); $oBody->setParts(array_merge(array($oBodyPart), $this->attachments)); $oAdaptedMessage->setBody($oBody)->setEncoding('UTF-8'); //Send message $this->getMailTransporter()->send($oAdaptedMessage); return $this; }
public function sendEmailsFromQueue($developmentMode = false) { $transport = $this->serviceManager->get('SlmMail\\Mail\\Transport\\SesTransport'); $entity = new $this->config['database']['entity'](); $tableName = $this->entityManager->getClassMetadata(get_class($entity))->getTableName(); $dql = 'SELECT m FROM ' . $this->config['database']['entity'] . ' m WHERE m.send = 0 AND m.scheduleDate <= :now ORDER BY m.prio, m.createDate DESC'; $query = $this->entityManager->createQuery($dql)->setParameter('now', date('Y-m-d H:i:s'))->setMaxResults($this->config['numberOfEmailsPerRun']); $queue = $query->getResult(); foreach ($queue as $mail) { // In development mode we only send emails to predefined email addresses to prevent "strange" unrequested // emails to users. if ($developmentMode === true && !in_array($mail->getRecipientEmail(), $this->config['developmentEmails'])) { $this->entityManager->getConnection()->update($tableName, array('send' => 1), array('id' => $mail->getId())); continue; } $message = new \Zend\Mail\Message(); $message->addFrom($mail->getSenderEmail(), $mail->getSenderName())->addTo($mail->getRecipientEmail(), $mail->getRecipientName())->setSubject($mail->getSubject()); if (trim($mail->getBodyHTML()) !== '') { $bodyPart = new \Zend\Mime\Message(); $bodyMessage = new \Zend\Mime\Part($mail->getBodyHTML()); $bodyMessage->type = 'text/html'; $bodyPart->setParts(array($bodyMessage)); $message->setBody($bodyPart); $message->setEncoding('UTF-8'); } else { $message->setBody($mail->getBodyText()); } try { $transport->send($message); $this->entityManager->getConnection()->update($tableName, array('send' => 1, 'sendDate' => date('Y-m-d H:i:s')), array('id' => $mail->getId())); } catch (\Exception $e) { $this->entityManager->getConnection()->update($tableName, array('send' => 2, 'error' => $e->getMessage()), array('id' => $mail->getId())); $this->queueNewMessage('MailAdmin', $this->config['adminEmail'], $e->getMessage(), $e->getMessage(), 'MailQueue Error', 9); } } }
/** * @return Zend\Mail\Message */ function tiki_get_basic_mail() { tiki_mail_setup(); $mail = new Zend\Mail\Message(); $mail->setEncoding('UTF-8'); $mail->getHeaders()->addHeaderLine('X-Tiki', 'yes'); return $mail; }
/** * Send an email to any email address * * @param mixed $from Email address or string: "name <email>" * @param mixed $to Email address or string: "name <email>" * @param string $subject The subject of the message * @param string $body The message body * @param array $params Optional parameters * @return bool * @throws NotificationException */ function notifications_html_handler_send_email($from, $to, $subject, $body, array $params = null) { $options = array('to' => $to, 'from' => $from, 'subject' => $subject, 'body' => $body, 'params' => $params, 'headers' => array("Content-Type" => "text/html; charset=UTF-8; format=flowed", "MIME-Version" => "1.0", "Content-Transfer-Encoding" => "8bit")); // $mail_params is passed as both params and return value. The former is for backwards // compatibility. The latter is so handlers can now alter the contents/headers of // the email by returning the array $options = elgg_trigger_plugin_hook('email', 'system', $options, $options); if (!is_array($options)) { // don't need null check: Handlers can't set a hook value to null! return (bool) $options; } try { if (empty($options['from'])) { $msg = "Missing a required parameter, '" . 'from' . "'"; throw new \NotificationException($msg); } if (empty($options['to'])) { $msg = "Missing a required parameter, '" . 'to' . "'"; throw new \NotificationException($msg); } $options['to'] = \Elgg\Mail\Address::fromString($options['to']); $options['from'] = \Elgg\Mail\Address::fromString($options['from']); $options['subject'] = elgg_strip_tags($options['subject']); $options['subject'] = html_entity_decode($options['subject'], ENT_QUOTES, 'UTF-8'); // Sanitise subject by stripping line endings $options['subject'] = preg_replace("/(\r\n|\r|\n)/", " ", $options['subject']); $options['subject'] = elgg_get_excerpt(trim($options['subject'], 80)); $message = new \Zend\Mail\Message(); foreach ($options['headers'] as $headerName => $headerValue) { $message->getHeaders()->addHeaderLine($headerName, $headerValue); } $message->setEncoding('UTF-8'); $message->addFrom($options['from']); $message->addTo($options['to']); $message->setSubject($options['subject']); $body = new Zend\Mime\Message(); $html = new \Zend\Mime\Part($options['body']); $html->type = "text/html"; $body->addPart($html); $files = elgg_extract('attachments', $options['params']); if (!empty($files) && is_array($files)) { foreach ($files as $file) { if (!$file instanceof \ElggFile) { continue; } $attachment = new \Zend\Mime\Part(fopen($file->getFilenameOnFilestore(), 'r')); $attachment->type = $file->getMimeType() ?: $file->detectMimeType(); $attachment->filename = $file->originalfilename ?: basename($file->getFilename()); $attachment->disposition = Zend\Mime\Mime::DISPOSITION_ATTACHMENT; $attachment->encoding = Zend\Mime\Mime::ENCODING_BASE64; $body->addPart($attachment); } } $message->setBody($body); $transport = notifications_html_handler_get_transport(); if (!$transport instanceof Zend\Mail\Transport\TransportInterface) { throw new \NotificationException("Invalid Email transport"); } $transport->send($message); } catch (\Exception $e) { elgg_log($e->getMessage(), 'ERROR'); return false; } return true; }
public function previewAction() { $this->updateLayoutWithIdentity(); if ($this->disallowRankLessThan(User::RANK_CORPORAL)) { return false; } $session = new SessionContainer('NightsWatch\\Event\\Create'); if (empty($session->name)) { $this->redirect()->toRoute('home', ['contoller' => 'event', 'action' => 'create']); return false; } $userRepo = $this->getEntityManager()->getRepository('NightsWatch\\Entity\\User'); $eventRepo = $this->getEntityManager()->getRepository('NightsWatch\\Entity\\Event'); $leader = $session->leader; if (!empty($leader)) { $leader = $userRepo->findOneBy(['username' => $leader]); } if (empty($leader)) { $leader = $this->getIdentityEntity(); } $newEvent = false; if (isset($session->id) && $session->id != false) { $event = $eventRepo->find($session->id); if (is_null($event)) { throw new Exception('No such event found'); } } else { $newEvent = true; $event = new Event(); } $event->name = $session->name; $event->description = $session->description; if ($newEvent) { $event->user = $this->getIdentityEntity(); } $event->start = new \DateTime($session->date . ' ' . $session->time); $event->region = $session->region; $event->leader = $leader; $event->type = $session->type; $offset = $session->offset + date('Z'); $add = $offset > 0 ? true : false; $offset = abs($offset); $interval = new \DateInterval('PT' . $offset . 'S'); if ($add) { $event->start->add($interval); } else { $event->start->sub($interval); } $event->lowestViewableRank = $session->rank; if ($this->getRequest()->isPost()) { $this->getEntityManager()->persist($event); $this->getEntityManager()->flush(); $event->user = $this->getIdentityEntity(); $session->name = ''; // Send out the Emails $sendSpecified = isset($session->sendemail) && (bool) $session->sendemail; $sendEmails = $newEvent || $sendSpecified; if ($sendEmails) { $criteria = Criteria::create()->where(Criteria::expr()->gte('rank', $event->lowestViewableRank)); /** @var User[] $users */ $users = $userRepo->matching($criteria); $mail = new \Zend\Mail\Message(); $mail->setSubject('[NightsWatch] Event: ' . $event->name); $mail->setFrom(new Address('*****@*****.**', $event->user->username)); $mail->setTo(new Address('*****@*****.**', 'Members')); $headers = $mail->getHeaders(); if ($newEvent) { $headers->addHeaderLine('Message-Id', '<event-' . $event->id . '@threads.minez-nightswatch.com>'); } else { $headers->addHeaderLine('References', '<event-' . $event->id . '@threads.minez-nightswatch.com>'); $headers->addHeaderLine('In-Reply-To', '<event-' . $event->id . '@threads.minez-nightswatch.com>'); } $headers->addHeaderLine('Threading-Id', '<event-' . $event->id . '@threads.minez-nightswatch.com>'); $mail->setEncoding('UTF-8'); $url = $this->url()->fromRoute('id', ['controller' => 'event', 'action' => 'view', 'id' => $event->id], ['force_canonical' => true]); $niceDate = $event->start->format('M j, Y'); $niceTime = $event->start->format('H:i T'); $region = $event->getRegionName(); // Create a signature $title = trim($event->user->getTitleOrRank()); if ($newEvent) { $lead = 'A new event has been posted to the calendar.'; } else { $lead = 'An event on the calendar has been updated with new, important information.'; } $event->description = "{$lead} All information concerning this event " . 'is classified and only available to members of rank ' . User::getRankName($event->lowestViewableRank) . " and up.\n\n" . 'You can read the details of this event at https://minez-nightswatch.com/event/' . $event->id . "\n\nEvent Details: \nDate: {$niceDate} \nTime: {$niceTime} \nRSVP: [{$url}]({$url}) " . ($event->region > 0 ? "\nRegion: {$region}" : '') . "\n\n" . "{$event->user->username} \n*{$title}*"; // Event Stuff // Not Yet Working. Not sure why. $start = clone $event->start; $start->setTimezone(new \DateTimeZone('UTC')); $dtstart = $start->format('Ymd\\THis\\Z'); $eventRaw = <<<CALENDAR BEGIN:VCALENDAR PRODID:-//NightsWatch//Nights Watch Event Creator//EN VERSION:2.0 CALSCALE:GREGORIAN METHOD:REQUEST BEGIN:VEVENT UID:event-{$event->id}@minez-nightswatch.com DTSTART:{$dtstart} ORGANIZER;CN=Night's Watch:noreply@minez-nightswatch.com SUMMARY:{$event->name} END:VEVENT END:VCALENDAR CALENDAR; $body = new MimeBody(); $bodyHtml = new MimePart($event->getParsedDescription()); $bodyHtml->type = Mime::TYPE_HTML; $bodyText = new MimePart($event->description); $bodyText->type = Mime::TYPE_TEXT; $bodyEvent = new MimePart($eventRaw); $bodyEvent->type = 'text/calendar'; $bodyEvent->disposition = Mime::DISPOSITION_INLINE; $bodyEvent->encoding = Mime::ENCODING_8BIT; $bodyEvent->filename = 'calendar.ics'; $body->setParts([$bodyHtml, $bodyText, $bodyEvent]); $mail->setBody($body); foreach ($users as $user) { if ($user->emailNotifications & User::EMAIL_ANNOUNCEMENT > 0) { $mail->addBcc(new Address($user->email, $user->username)); } } $transport = new Sendmail(); $transport->send($mail); } $this->redirect()->toRoute('id', ['controller' => 'event', 'id' => $event->id]); return false; } return new ViewModel(['event' => $event, 'user' => $this->getIdentityEntity()]); }
public static function send_email_zend($email, $betreff, $text_plain, $text_html = null, $mail_tag = null) { $mail = new Zend\Mail\Message(); $mail->setFrom(Yii::app()->params["adminEmail"], Yii::app()->params["adminEmailName"]); $mail->addTo($email, $email); $mail->setSubject($betreff); $mail->setEncoding("UTF-8"); if ($text_html !== null) { $converter = new \TijsVerkoyen\CssToInlineStyles\CssToInlineStyles($text_html); $converter->setStripOriginalStyleTags(false); $converter->setUseInlineStylesBlock(true); $converter->setEncoding("UTF-8"); $converter->setExcludeMediaQueries(true); $converter->setCleanup(false); $text_html = $converter->convert(); $text_part = new Zend\Mime\Part($text_plain); $text_part->type = "text/plain"; $text_part->charset = "UTF-8"; $html_part = new Zend\Mime\Part($text_html); $html_part->type = "text/html"; $html_part->charset = "UTF-8"; $mimem = new Zend\Mime\Message(); $mimem->setParts([$text_part, $html_part]); $mail->setBody($mimem); $mail->getHeaders()->get('content-type')->setType('multipart/alternative'); } else { $mail->setBody($text_plain); $headers = $mail->getHeaders(); $headers->removeHeader('Content-Type'); $headers->addHeaderLine('Content-Type', 'text/plain; charset=UTF-8'); } $transport = new Zend\Mail\Transport\Sendmail(); $transport->send($mail); }
public function sendMail($post) { $options = new \Zend\Mail\Transport\SmtpOptions(array("name" => "localhost", "host" => "localhost", "connection_class" => "login", "connection_config" => array("username" => "*****@*****.**", "password" => "QHuMxhQQ"))); $message = array(); $ch1 = $post->checkbox1; $message[] = 'Отметьте пункты соответствующие интересам вашей компании:'; if (is_array($ch1)) { foreach ($ch1 as $chItem) { $message[] = $chItem; } } else { $message[] = $ch1; } $message[] = ''; $message[] = 'Пожалуйста, предоставьте нам ссылку на ваш веб-сайт:'; $message[] = $post->site ?: '-'; $ch2 = $post->checkbox2; $message[] = ''; $message[] = 'Отметьте пункты соответствующие вашей рекламной политике:'; if (is_array($ch2)) { foreach ($ch2 as $chItem) { $message[] = $chItem; } } else { $message[] = $ch2; } $message[] = ''; $message[] = 'Пожалуйста, предоставьте нам список ключевых слов, при поиске которых вы хотите занять место в Google/Yandex.'; $message[] = 'Тематика:' . $post->theme ?: '-'; $message[] = 'Ключи:' . $post->keys ?: '-'; $ch3 = $post->checkbox3; $message[] = ''; $message[] = 'Отметьте на каких социальных ресурсах представлена ваша компания:'; if (is_array($ch3)) { foreach ($ch3 as $chItem) { $message[] = $chItem; } } else { $message[] = $ch3; } $message[] = ''; $message[] = 'Пожалуйста, предоставьте нам ссылки для каждой из Ваших учетных записей в социальных сетях, перечисленных в предыдущем вопросе.'; $message[] = $post->links ?: '-'; $message[] = ''; $message[] = 'Пожалуйста, предоставьте нам любую дополнительную информацию о Вашем бизнесе, которая по вашему мнению может быть полезной'; $message[] = $post->info ?: '-'; $message[] = ''; $message[] = 'Ваше Имя:'; $message[] = $post->name ?: '-'; $message[] = ''; $message[] = 'Ваш адрес:'; $message[] = $post->adress_street ?: ' ' . ' - улица'; $message[] = $post->adress_city ?: ' ' . ' - город'; $message[] = $post->adress_region ?: ' ' . ' - область'; $message[] = $post->adress_index ?: ' ' . ' - индекс'; $message[] = $post->adress_country ?: ' ' . ' - страна'; $message[] = ''; $message[] = 'Email:'; $message[] = $post->email; $message[] = ''; $message[] = 'Phone:'; $message[] = $post->phone; $htmlPart = new \Zend\Mime\Part(implode("<br>", $message)); $htmlPart->type = "text/html"; $body = new \Zend\Mime\Message(); $body->setParts(array($htmlPart)); $msg = new \Zend\Mail\Message(); $msg->setFrom('*****@*****.**'); $msg->addTo('*****@*****.**'); $msg->setSubject('Новый заказ'); $msg->setEncoding('UTF-8'); $msg->setBody($body); $headers = $msg->getHeaders(); $headers->removeHeader('Content-Type'); $headers->addHeaderLine('Content-Type', 'text/html; charset=UTF-8'); $transport = new \Zend\Mail\Transport\Smtp(); $transport->setOptions($options); try { $transport->send($msg); } catch (Exception $e) { } return $message; }