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