/** * @inheritDoc */ public static function fromWrappedMessage(MailWrappedMessage $wrappedMessage = null, $transport = null) { if (!$wrappedMessage instanceof MailWrappedMessage) { throw new MailWrapperSetupException('Not MailWrappedMessage'); } $message = new Message(); foreach ($wrappedMessage->getToRecipients() as $address) { $message->addTo($address); } foreach ($wrappedMessage->getCcRecipients() as $address) { $message->addCc($address); } foreach ($wrappedMessage->getBccRecipients() as $address) { $message->addBcc($address); } $message->setReplyTo($wrappedMessage->getReplyTo()); $message->setFrom($wrappedMessage->getFrom()); $message->setSubject($wrappedMessage->getSubject()); if ($wrappedMessage->getContentText()) { $message->setBody($wrappedMessage->getContentText()); } if ($wrappedMessage->getContentHtml()) { $html = new MimePart($wrappedMessage->getContentHtml()); $html->type = "text/html"; $message->setBody($body); } return $message; }
public function testRestoreFromSerializedString() { $this->message->addTo('*****@*****.**', 'ZF DevTeam'); $this->message->addFrom('*****@*****.**', "Matthew Weier O'Phinney"); $this->message->addCc('*****@*****.**', 'ZF Contributors List'); $this->message->setSubject('This is a subject'); $this->message->setBody('foo'); $serialized = $this->message->toString(); $restoredMessage = Message::fromString($serialized); $this->assertEquals($serialized, $restoredMessage->toString()); }
public function sendMail($mailOptions = array()) { $this->_setMailOptions($mailOptions); $text = new Part($this->mailBody); $text->type = Mime::TYPE_HTML; $mailBodyParts = new MimeMessage(); $mailBodyParts->addPart($text); if (!empty($this->fileNames) && !empty($this->filePaths)) { foreach ($this->filePaths as $key => $filePath) { $file = new Part(file_get_contents($filePath)); $file->encoding = Mime::ENCODING_BASE64; $file->type = finfo_file(finfo_open(), $filePath, FILEINFO_MIME_TYPE); $file->disposition = Mime::DISPOSITION_ATTACHMENT; $file->filename = $this->fileNames[$key]; $mailBodyParts->addPart($file); } } $options = array(); if ($this->useSMTP === false) { $options = new SmtpOptions(array("name" => $this->smtpName, "host" => $this->smtpHost, "port" => $this->smtpPort)); } else { $options = new SmtpOptions(array('name' => $this->smtpName, 'host' => $this->smtpHost, 'port' => $this->smtpPort, 'connection_class' => $this->smtpConnectionClass, 'connection_config' => array('ssl' => $this->smtpSsl, 'username' => $this->smtpUsername, 'password' => $this->smtpPassword))); } $mail = new Message(); $mail->setBody($mailBodyParts); $mail->setFrom($this->mailFrom, $this->mailFromNickName); $mail->addTo($this->mailTo); if (!empty($this->mailCc)) { $mail->addCc($this->mailCc); } if (!empty($this->mailBcc)) { $mail->addBcc($this->mailBcc); } $mail->setSubject($this->mailSubject); $transport = new SmtpTransport(); $transport->setOptions($options); $emailLogInfo = array('email_to' => $this->mailTo, 'email_from' => $this->mailFrom, 'email_body' => $this->mailBody, 'email_subject' => $this->mailSubject, 'sender_type' => $this->mailSenderType); $emailSend = 0; try { $transport->send($mail); $emailSend = 1; } catch (\Exception $e) { $emailLogInfo['email_error'] = $e->getMessage(); throw $e; } return $emailSend; }
/** * Send email * * @access public */ public function execute() { $payload = $this->getContent(); $from = $payload['from']; $to = $payload['to']; $subject = $payload['subject']; $body = $payload['body']; $message = new Message(); $message->addTo($to)->addFrom($from)->setSubject($subject)->setBody($body); if (array_key_exists('bcc', $payload)) { $bcc = $payload['bcc']; $message->addBcc($bcc); } if (array_key_exists('cc', $payload)) { $cc = $payload['cc']; $message->addCc($cc); } $this->transport->send($message); }
public function sendMail($mail) { // Build the message body $mimeParts = array(); foreach ($mail->getParts() as $part) { $mimePart = new MimePart($part->getContent()); $mimePart->type = $part->getType(); $mimeParts[] = $mimePart; } $body = new MimeMessage(); $body->setParts($mimeParts); // Build the message. $message = new Mail\Message(); $message->setBody($body); // Set the participants foreach ($mail->getParticipants() as $participant) { if ($participant->getComposition() == 'to') { $message->addTo($participant->getAddress(), $participant->getName()); } if ($participant->getComposition() == 'cc') { $message->addCc($participant->getAddress(), $participant->getName()); } if ($participant->getComposition() == 'bcc') { $message->addBcc($participant->getAddress(), $participant->getName()); } if ($participant->getComposition() == 'from') { $message->addFrom($participant->getAddress(), $participant->getName()); } } // Set the subject $message->setSubject($mail->getSubject()); $contentType = $mail->getContentType(); if ($contentType) { $message->getHeaders()->get('content-type')->setType($contentType); } // Create the transport and send. $transport = new SmtpTransport(); $transport->setOptions(new SmtpOptions($this->options)); $transport->send($message); }
public function attachDefaultListeners() { if ($this->eventManager !== null) { return; } $this->getEventManager()->attach(self::EVENT_SEND_MAIL, function (EventInterface $e) { $params = $e->getParams(); $message = new Message(); $attachments = []; if (isset($params['to']) && is_array($params['to'])) { $message->setTo($params['to']['email'], $params['to']['name']); } if (isset($params['cc']) && is_array($params['cc'])) { foreach ($params['cc'] as $cc) { $message->addCc($cc['email'], $cc['name']); } } if (isset($params['bcc']) && is_array($params['bcc'])) { foreach ($params['bcc'] as $bcc) { $message->addBcc($bcc['email'], $bcc['name']); } } if (isset($params['from']) && is_array($params['from'])) { $message->setFrom($params['from']['email'], $params['from']['name']); } if (isset($params['subject']) && $params['subject']) { $message->setSubject($params['subject']); } if (isset($params['body']) && $params['body']) { $message->setBody($params['body']); } if (isset($params['attachments']) && is_array($params['attachments'])) { foreach ($params['attachments'] as $filePath) { $attachments[] = $this->getPartFromFile($filePath); } } $this->send($message, $attachments); }); }
/** * Set the BCC and CC recipients to the email (they are the same for every email). * * @return Message */ public function setShadowRecipients() { //Cc recipients foreach ($this->email->getCc() as $emailAddress => $contact) { if ($contact instanceof Contact) { $this->message->addCc($contact->getEmail(), $contact); } else { $this->message->addCc($emailAddress, $contact); } } //Bcc recipients foreach ($this->email->getBcc() as $emailAddress => $contact) { if ($contact instanceof Contact) { $this->message->addBcc($contact->getEmail(), $contact); } else { $this->message->addBcc($emailAddress, $contact); } } if (!is_null($this->email->getReplyTo())) { $this->message->addReplyTo($this->email->getReplyTo(), $this->email->getReplyToName()); } }
public function send($data = array(), $viewModel) { if ($viewModel instanceof ModelInterface) { $body = $this->renderModel($viewModel); } elseif (is_string($viewModel)) { $body = $this->renderText($viewModel); } else { throw new \Exception('Invalid viewModel for mail body'); } $text = new MimePart(''); $text->type = "text/plain"; $html = new MimePart($body); $html->type = "text/html"; $body_html = new MimeMessage(); $body_html->setParts(array($text, $html)); $mail = new Mail\Message(); $mail->setEncoding("UTF-8"); $mail->setBody($body_html); $mail->setFrom($this->_from_mail, $this->_from_name); $mail->addTo($data['to']); if (isset($data['cc'])) { $mail->addCc($data['cc']); } if (isset($data['bcc'])) { $mail->addBcc($data['bcc']); } if (isset($data['replyTo'])) { $mail->addReplyTo($data['replyTo'], $data['replyNameTo']); } else { $mail->addReplyTo($this->_from_mail, $this->_from_name); } if (isset($data['dkimSign'])) { $signer = $this->getController()->getServiceLocator()->get('DkimSigner'); $signer->signMessage($mail); } $mail->setSubject($data['subject']); return $this->_transport->send($mail); }
/** * @param UserInterface $user * @return Message */ protected function getMessage(UserInterface $user) { // Emailing logic here $content = $this->renderMessageContent($user); $htmlPart = new MimePart($content); $htmlPart->type = "text/html"; $textPart = new MimePart($content); $textPart->type = "text/plain"; $body = new MimeMessage(); $body->setParts(array($textPart, $htmlPart)); $message = new Message(); $message->addFrom($this->getOptions()->get('from_email'), $this->getOptions()->get('from_name')); $message->addTo($user->getEmail(), $user->getFirstName() . ' ' . $user->getLastName()); $ccs = $this->getOptions()->get('copy_to', array()); foreach ($ccs as $cc) { $message->addCc($cc); } $message->setSubject($this->getOptions()->get('reset_subject', 'Please Reset Your Password')); $message->setEncoding("UTF-8"); $message->setBody($body); $message->getHeaders()->get('content-type')->setType('multipart/alternative'); return $message; }
public function testSettingNonAsciiEncodingForcesMimeEncodingOfSomeHeaders() { $this->message->addTo('*****@*****.**', 'ZF DevTeam'); $this->message->addFrom('*****@*****.**', "Matthew Weier O'Phinney"); $this->message->addCc('*****@*****.**', 'ZF Contributors List'); $this->message->addBcc('*****@*****.**', 'ZF CR Team'); $this->message->setSubject('This is a subject'); $this->message->setEncoding('UTF-8'); $test = $this->message->getHeaders()->toString(); $expected = '=?UTF-8?Q?ZF=20DevTeam?='; $this->assertContains($expected, $test); $this->assertContains('<*****@*****.**>', $test); $expected = "=?UTF-8?Q?Matthew=20Weier=20O'Phinney?="; $this->assertContains($expected, $test, $test); $this->assertContains('<*****@*****.**>', $test); $expected = '=?UTF-8?Q?ZF=20Contributors=20List?='; $this->assertContains($expected, $test); $this->assertContains('<*****@*****.**>', $test); $expected = '=?UTF-8?Q?ZF=20CR=20Team?='; $this->assertContains($expected, $test); $this->assertContains('<*****@*****.**>', $test); $expected = 'Subject: =?UTF-8?Q?This=20is=20a=20subject?='; $this->assertContains($expected, $test); }
/** * send email * * @param $fromemail * @param $accessToken * @param $email_type * @param $imap_server * @param $subject * @param $body * @param $toEmail * @param $ccEmail * @param $bccEmail * @param $attachemnts * @param string $mailtype * * @return bool|void * * @since rt-Helpdesk 0.1 */ public function sendemail($fromname, $fromemail, $accessToken, $email_type, $imap_server, $subject, $body, $toEmail, $ccEmail, $bccEmail, $attachemnts, $email = null, $mailtype = 'notification') { set_time_limit(0); if (!$this->try_imap_login($fromemail, $accessToken, $email_type, $imap_server)) { return false; } $transport = new SmtpTransport(); $smtp_args = array(); switch ($email_type) { case 'goauth': $smtp_args['name'] = 'gmail-smtp'; $smtp_args['host'] = 'smtp.gmail.com'; $smtp_args['port'] = 465; $smtp_args['connection_class'] = 'oauth2'; $smtp_args['connection_config'] = array('xoauth2_request' => $this->authString, 'ssl' => 'ssl'); break; case 'imap': global $rt_imap_server_model; $server = $rt_imap_server_model->get_server_by_id($imap_server); if (empty($server)) { echo 'Mail Server Not Found. Invalid Server id.'; return false; } $smtp_args['name'] = $server->outgoing_smtp_server; $smtp_args['host'] = $server->outgoing_smtp_server; $smtp_args['port'] = $server->outgoing_smtp_port; $smtp_args['connection_class'] = 'login'; $smtp_args['connection_config'] = array('username' => $fromemail, 'password' => rtmb_encrypt_decrypt($accessToken), 'ssl' => $server->outgoing_smtp_enc); break; default: break; } $options = new SmtpOptions($smtp_args); $transport->setOptions($options); $message = new Message(); $message->addFrom($fromemail, $fromname); if (!empty($email)) { $message_id = $reference_id = $in_reply_to = ''; if ('comment' == $email->refrence_type) { $message_id = get_comment_meta($email->refrence_id, '_rtlib_messageid', true); $reference_id = get_comment_meta($email->refrence_id, '_rtlib_references', true); if (empty($message_id)) { $comment = get_comment($email->refrence_id); $post_id = $comment->comment_post_ID; } } else { if ('post' == $email->refrence_type) { $post_id = $email->refrence_id; } } if (isset($post_id)) { $reference_id = get_post_meta($post_id, '_rtlib_references', true); $message_id = rtmb_get_reply_to_from_ref_id($reference_id); $reply_to = apply_filters('rtlib_reply_to_header', '', $fromemail, $post_id); if (!empty($reply_to)) { $message->addCustomeHeader('Reply-To', trim($reply_to)); } } //Get reply to header if (!empty($message_id)) { $message->addCustomeHeader('In-Reply-To', trim($message_id)); } //Get References header if (!empty($message_id)) { $reference_id = rtmb_add_message_id_in_ref_id($message_id, $reference_id); } if (!empty($reference_id)) { $reference_ids = rtmb_get_reference_id_array($reference_id); $_reference_id = implode(' ', $reference_ids); $message->addCustomeHeader('References', $_reference_id); } // Add x-mailer if (!empty($email->refrence_id)) { $message->addCustomeHeader('X-Mailer', 'rtCamp-mail-lib'); if ('comment' == $email->refrence_type) { $comment = get_comment($email->refrence_id); $post_id = $comment->comment_post_ID; } else { $post_id = $email->refrence_id; } $new_message_id = rtmb_generate_message_id($post_id, $email->id); rtmb_add_message_id_in_ref_id($new_message_id, $reference_id, $post_id); $message->addCustomeHeader('Message-ID', $new_message_id); } } //$mail->setFrom($fromemail); $message->setSubject(stripslashes_deep(html_entity_decode($subject, ENT_QUOTES, 'UTF-8'))); //$mail->setSubject($subject); if (!empty($toEmail)) { foreach ($toEmail as $temail) { //$mail->addTo($temail["email"], isset($temail["name"]) ? $temail["name"] : ''); $message->addTo($temail['email'], isset($temail['name']) ? $temail['name'] : ''); } } if (!empty($ccEmail)) { foreach ($ccEmail as $temail) { //$mail->addCc($temail["email"], isset($temail["name"]) ? $temail["name"] : ''); $message->addCc($temail['email'], isset($temail['name']) ? $temail['name'] : ''); } } if (!empty($bccEmail)) { foreach ($bccEmail as $temail) { if (isset($temail['email'])) { $message->addBcc($temail['email'], isset($temail['name']) ? $temail['name'] : ''); } } } // create a MimeMessage object that will hold the mail body and any attachments $bodyPart = new MimeMessage(); $bodyMessage = new MimePart($body); $bodyMessage->type = 'text/html'; $bodyMessage->encoding = Mime::ENCODING_QUOTEDPRINTABLE; $bodyPart->addPart($bodyMessage); if (!empty($attachemnts) && is_array($attachemnts)) { foreach ($attachemnts as $attach) { $file_array = explode('/', $attach); $fileName = $file_array[count($file_array) - 1]; $attachment = new MimePart(file_get_contents($attach)); $attachment->type = rtmb_get_mime_type($attach); $attachment->filename = $fileName; $attachment->encoding = Zend\Mime\Mime::ENCODING_BASE64; $attachment->disposition = Zend\Mime\Mime::DISPOSITION_ATTACHMENT; $bodyPart->addPart($attachment); } } $message->setBody($bodyPart); $transport->send($message); return true; }
/** * @group medium */ public function testMsgHandleUidSearch() { $path1 = './test_data/test_mailbox_' . date('Ymd_His') . '_' . uniqid('', true); $log = new Logger('test_application'); #$log->pushHandler(new StreamHandler('php://stdout', Logger::DEBUG)); $server = new Server('', 0); $server->setLog($log); $server->init(); $storage1 = new DirectoryStorage(); $storage1->setPath($path1); $server->addStorage($storage1); $client = new Client(); $client->setServer($server); $client->setId(1); $msg = $client->msgHandle('17 uid search'); $this->assertEquals('17 NO uid failure' . Client::MSG_SEPARATOR, $msg); $client->setStatus('hasAuth', true); $msg = $client->msgHandle('17 uid search'); $this->assertEquals('17 NO No mailbox selected.' . Client::MSG_SEPARATOR, $msg); $client->msgHandle('6 select INBOX'); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 1'); $message->setBody('my_body'); $server->addMail($message, null, null, false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 2'); $message->setBody('my_body'); $server->addMail($message, null, array(Storage::FLAG_ANSWERED), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->addBcc('*****@*****.**'); $message->setSubject('my_subject 3'); $message->setBody('my_body'); $server->addMail($message, null, null, false); $headers = new Headers(); $headers->addHeader(Date::fromString('Date: ' . date('r', mktime(0, 0, 0, 2, 21, 1987)))); $message = new Message(); $message->setHeaders($headers); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 4'); $message->setBody('my_body'); $server->addMail($message, null, null, false); $message = new Message(); $message->setHeaders($headers); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 5'); $message->setBody('my_body'); $server->addMail($message, null, null, false); $headers = new Headers(); $headers->addHeader(Date::fromString('Date: ' . date('r', mktime(0, 0, 0, 11, 20, 1986)))); $message = new Message(); $message->setHeaders($headers); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 6'); $message->setBody('hello world'); $server->addMail($message, null, null, false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 7'); $message->setBody('my_body'); $server->addMail($message, null, array(Storage::FLAG_DELETED), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 8'); $message->setBody('my_body'); $server->addMail($message, null, array(Storage::FLAG_DRAFT), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 9'); $message->setBody('my_body'); $server->addMail($message, null, array(Storage::FLAG_FLAGGED), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 10'); $message->setBody('my_body'); $server->addMail($message, null, null, false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 11'); $message->setBody('my super fancy long body for testing the size'); $server->addMail($message, null, null, false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 12'); $message->setBody('my_body'); $server->addMail($message, null, array(), true); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 13'); $message->setBody('my_body'); $server->addMail($message, null, array(), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); #$message->setSubject('my_subject 14'); $message->setBody('my_body'); $server->addMail($message, null, array(), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 15'); $message->setBody('this is a test body'); $server->addMail($message, null, array(), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 16'); #$message->setBody('my_body'); $server->addMail($message, null, array(), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 17'); $message->setBody('my_body'); $server->addMail($message, null, array(), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 18'); $message->setBody('my_body'); $server->addMail($message, null, array(), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 19'); $message->setBody('my_body'); $server->addMail($message, null, array(Storage::FLAG_ANSWERED), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 20'); $message->setBody('my_body'); $server->addMail($message, null, array(Storage::FLAG_DELETED), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->setSubject('my_subject 21'); $message->setBody('my_body'); $server->addMail($message, null, array(Storage::FLAG_DRAFT), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->addCc('*****@*****.**'); $message->setSubject('my_subject 22'); $message->setBody('my_body'); $server->addMail($message, null, array(Storage::FLAG_FLAGGED), false); $message = new Message(); $message->addFrom('*****@*****.**'); $message->addTo('*****@*****.**'); $message->addCc('*****@*****.**'); $message->setSubject('my_subject 23'); $message->setBody('my_body'); $server->addMail($message, null, array(Storage::FLAG_SEEN), false); $msg = $client->msgHandle('17 uid SEARCH'); $expect = '17 BAD Arguments invalid.' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH ALL'); $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 '; $expect .= '100011 100012 100013 100014 100015 100016 100017 100018 100019 100020 100021 '; $expect .= '100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH ANSWERED'); $expect = '* SEARCH 100002 100019' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH BCC apple'); $expect = '* SEARCH 100003' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); #$msg = $client->msgHandle('17 uid SEARCH BEFORE 1990'); $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; #$this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH BODY world'); $expect = '* SEARCH 100006' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH CC dev3'); $expect = '* SEARCH 100022 100023' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH DELETED'); $expect = '* SEARCH 100007 100020' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH DRAFT'); $expect = '* SEARCH 100008 100021' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH FLAGGED'); $expect = '* SEARCH 100009 100022' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH FROM test@'); $expect = '* SEARCH 100010' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH HEADER Date 1987'); $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH HEADER TO fox21'); $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011 100012 '; $expect .= '100013 100014 100015 100016 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH LARGER 40'); $expect = '* SEARCH 100011' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH NEW'); $expect = '* SEARCH 100012' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH OLD'); $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011 100013'; $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH ON 1987-02-21'); $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH OR 5 6'); $expect = '* SEARCH 100005 100006' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH OR OR 5 6 7'); $expect = '* SEARCH 100005 100006 100007' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH RECENT'); $expect = '* SEARCH 100012' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH SEEN'); $expect = '* SEARCH 100001 100003 100004 100005 100006 100010 100011 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH SENTBEFORE 1990-01-01'); $expect = '* SEARCH 100004 100005 100006' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH SENTON 1987-02-21'); $expect = '* SEARCH 100004 100005' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH SENTSINCE 1987-02-21'); $expect = '* SEARCH 100001 100002 100003 100004 100005 100007 100008 100009 100010 100011 100012 100013'; $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH SMALLER 30'); $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100012 100013'; $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH SUBJECT "t 13"'); $expect = '* SEARCH 100013' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH TEXT test'); $expect = '* SEARCH 100011 100015' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH TO steve'); $expect = '* SEARCH 100017' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH UID 100018'); $expect = '* SEARCH 100018' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH UNANSWERED'); $expect = '* SEARCH 100001 100003 100004 100005 100006 100007 100008 100009 100010 100011 100012 100013'; $expect .= ' 100014 100015 100016 100017 100018 100020 100021 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH UNDELETED'); $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100008 100009 100010 100011 100012 100013'; $expect .= ' 100014 100015 100016 100017 100018 100019 100021 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH UNDRAFT'); $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100009 100010 100011 100012 100013'; $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH UNFLAGGED'); $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100010 100011 100012 100013'; $expect .= ' 100014 100015 100016 100017 100018 100019 100020 100021 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); #$msg = $client->msgHandle('17 uid SEARCH UNKEYWORD'); $expect = '* SEARCH 123' . Client::MSG_SEPARATOR . '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; #$this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH UNSEEN'); $expect = '* SEARCH 100002 100007 100008 100009 100012 100013 100014 100015 100016 100017 100018'; $expect .= ' 100019 100020 100021 100022' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH OR CC dev3 TO steve'); $expect = '* SEARCH 100017 100022 100023'; $expect .= '' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH OR CC dev3 NOT CC dev2'); $expect = '* SEARCH 100001 100002 100003 100004 100005 100006 100007 100008 100009 100010 100011'; $expect .= ' 100012 100013 100014 100015 100016 100017'; $expect .= ' 100018 100019 100020 100021 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH CC dev3 AND TO dev2'); $expect = ''; $expect .= '* SEARCH 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH CC dev3 AND OR FROM dev1 TO dev2'); $expect = ''; $expect .= '* SEARCH 100022 100023' . Client::MSG_SEPARATOR; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH CC dev3 AND AND FROM dev1 NOT TO dev2'); $expect = ''; $expect .= '17 OK UID SEARCH completed' . Client::MSG_SEPARATOR; $this->assertEquals($expect, $msg); $msg = $client->msgHandle('17 uid SEARCH BEFORE 1985'); $this->assertEquals('17 OK UID SEARCH completed' . Client::MSG_SEPARATOR, $msg); $msg = $client->msgHandle('17 uid SEARCH BODY xyz'); $this->assertEquals('17 OK UID SEARCH completed' . Client::MSG_SEPARATOR, $msg); #$msg = $client->msgHandle('17 uid SEARCH OR (UNDELETED FROM "thefox") ANSWERED AND FROM "21"'); #$msg = $client->msgHandle('17 uid SEARCH UNDELETED HEADER From @fox21.at HEADER Date 2014'); #$msg = $client->msgHandle('17 uid SEARCH NOT 5'); #$msg = $client->msgHandle('17 uid SEARCH NOT UID 100005'); #$this->assertEquals('x17 OK UID SEARCH completed'.Client::MSG_SEPARATOR, $msg); #$msg = $client->msgHandle('17 uid SEARCH NOT UID 100021'); $server->shutdown(); $filesystem = new Filesystem(); $filesystem->remove($path1); }
/** * common functionality for send email * * @param array $mailOptions * use mailTo,mailFrom,mailFromNickName,mailSubject,mailBody,... * as options * @author Kaushal * @method sendMail * @return int */ public function sendMail($mailOptions = array()) { $config = $this->serviceManager->get('config'); $smtpName = $config['settings']['EMAIL']['SMTP_NAME']; $smtpHost = $config['settings']['EMAIL']['SMTP_HOST']; $smtpPort = $config['settings']['EMAIL']['SMTP_PORT']; $smtpConnectionClass = $config['settings']['EMAIL']['SMTP_CONNECTION_CLASS']; $smtpUsername = $config['settings']['EMAIL']['SMTP_USERNAME']; $smtpPassword = $config['settings']['EMAIL']['SMTP_PASSWORD']; $smtpSsl = $config['settings']['EMAIL']['SMTP_SSL']; $mailBody = $config['settings']['EMAIL']['BODY']; $mailFrom = $config['settings']['EMAIL']['FROM']; $mailSubject = $config['settings']['EMAIL']['SUBJECT']; $mailFromNickName = $config['settings']['EMAIL']['FROM_NICK_NAME']; $mailTo = $config['settings']['EMAIL']['TO']; $mailSenderType = $config['settings']['EMAIL']['SMTP_SENDER_TYPE']; if (array_key_exists('mailTo', $mailOptions)) { $mailTo = $mailOptions['mailTo']; } if (array_key_exists('mailCc', $mailOptions)) { $mailCc = $mailOptions['mailCc']; } if (array_key_exists('mailFrom', $mailOptions)) { $mailFrom = $mailOptions['mailFrom']; } if (array_key_exists('mailFromNickName', $mailOptions)) { $mailFromNickName = $mailOptions['mailFromNickName']; } if (array_key_exists('mailSubject', $mailOptions)) { $mailSubject = $mailOptions['mailSubject']; } if (array_key_exists('mailBody', $mailOptions)) { $mailBody = $mailOptions['mailBody']; } if (array_key_exists('sender_type', $mailOptions)) { $mailSenderType = $mailOptions['sender_type']; } $text = new Part($mailBody); $text->type = \Zend\Mime\Mime::TYPE_HTML; $mailBodyParts = new Message(); $mailBodyParts->addPart($text); if (!empty($mailOptions['realFileName']) && !empty($mailOptions['tempFilePath'])) { $file = new Part(file_get_contents($mailOptions['tempFilePath'])); $file->encoding = \Zend\Mime\Mime::ENCODING_BASE64; $file->type = finfo_file(finfo_open(), $mailOptions['tempFilePath'], FILEINFO_MIME_TYPE); $file->disposition = \Zend\Mime\Mime::DISPOSITION_ATTACHMENT; // $file->filename =basename($mailOptions['tempFilePath']); $file->filename = $mailOptions['realFileName']; $mailBodyParts->addPart($file); } $options = new SmtpOptions(array("name" => $smtpName, "host" => $smtpHost, "port" => $smtpPort)); $mail = new Mail\Message(); $mail->setBody($mailBodyParts); $mail->setFrom($mailFrom, $mailFromNickName); $mail->addTo($mailTo); if (!empty($mailCc)) { $mail->addCc($mailCc); } $mail->setSubject($mailSubject); $transport = new SmtpTransport(); $transport->setOptions($options); $emailLogInfo = array('email_to' => $mailTo, 'email_from' => $mailFrom, 'email_body' => $mailBody, 'email_subject' => $mailSubject, 'sender_type' => $mailSenderType); try { /* * Following line is commented temporary Uncomment while going */ $transport->send($mail); $emailSend = 1; } catch (\Exception $e) { $emailSend = 0; $emailLogInfo['email_error'] = $e->getMessage(); // print_r($emailLogInfo); throw $e; } return $emailSend; /* * $emailLogInfo['email_send'] = ($emailSend == 1) ? 'y' : 'n'; if (is_array($mailTo)) { foreach ($mailTo as $value) { $emailLogInfo['email_to'] = $value; $emailSave = $this->saveEmailLog($emailLogInfo, $this->getServiceLocator()); } } else { $emailSave = $this->saveEmailLog($emailLogInfo, $this->getServiceLocator()); } $flag = ($emailSave == 1 && $emailSend == 1) ? 1 : 0; return $flag; */ }
function setCc($address) { foreach ((array) $address as $cc) { $this->mail->addCc($cc); } }
public function sendEmail($template = 'message', $emailOptions = array()) { $emailOptions = array_merge($this->config, $emailOptions); $content = $this->renderEmail($template, $emailOptions); if ($emailOptions['debug']) { $displays = array(); foreach ($emailOptions as $key => $value) { if ($key !== 'message' && $key != 'attachments') { if (!is_object($value)) { $displays[] = $key . ': <strong>' . (is_array($value) ? implode(',', $value) : $value) . '</strong>'; } else { $displays[] = $key . ': <strong>OBJ</strong>'; } } } echo '<div style=" background-color: #444; padding: 50px; box-shadow: 1px 1px 10px rgba(0,0,0,0.8) inset; "> <div style=" width:80%; margin:10px auto; background-color:#ffffff; box-shadow:1px 2px 5px rgba(0,0,0,0.5); padding: 15px; " > ' . implode(' ; ', $displays) . ' </div> <div style=" width:80%; margin:10px auto; background-color:#ffffff; box-shadow:1px 2px 5px rgba(0,0,0,0.5); " >' . $content . '</div>' . (isset($emailOptions['attachments']) && $emailOptions['attachments'] ? '<div style=" width:80%; margin:10px auto; background-color:#ffffff; box-shadow:1px 2px 5px rgba(0,0,0,0.5); padding: 15px; " >Mit Anhang</div>' : '') . '</div>'; } $attachments = isset($emailOptions['attachments']) && $emailOptions['attachments'] && is_array($emailOptions['attachments']) ? $emailOptions['attachments'] : array(); $message = new Message(); $message->addTo($emailOptions['to']); $message->addFrom($emailOptions['from']); $message->setSubject($emailOptions['subject']); if ($emailOptions['bcc']) { $message->addBcc($emailOptions['bcc']); } if ($emailOptions['cc']) { $message->addCc($emailOptions['cc']); } if ($this->html) { // HTML part $htmlPart = new MimePart($content); $htmlPart->encoding = Mime::ENCODING_QUOTEDPRINTABLE; $htmlPart->type = "text/html; charset=UTF-8"; } // Plain text part $textPart = new MimePart(strip_tags($content)); $textPart->encoding = Mime::ENCODING_QUOTEDPRINTABLE; $textPart->type = "text/plain; charset=UTF-8"; $body = new MimeMessage(); if ($attachments) { // With attachments, we need a multipart/related email. First part // is itself a multipart/alternative message $content = new MimeMessage(); $content->addPart($textPart); if ($this->html) { $content->addPart($htmlPart); } $contentPart = new MimePart($content->generateMessage()); $contentPart->type = "multipart/alternative;\n boundary=\"" . $content->getMime()->boundary() . '"'; $body->addPart($contentPart); $messageType = 'multipart/related'; // Add each attachment foreach ($attachments as $thisAttachment) { $attachment = new MimePart($thisAttachment['buffer']); $attachment->filename = $thisAttachment['filename']; $attachment->type = Mime::TYPE_OCTETSTREAM; $attachment->encoding = Mime::ENCODING_BASE64; $attachment->disposition = Mime::DISPOSITION_ATTACHMENT; $body->addPart($attachment); } } else { // No attachments, just add the two textual parts to the body if ($this->html) { $body->setParts(array($textPart, $htmlPart)); $messageType = 'multipart/alternative'; } else { $body->setParts(array($textPart)); $messageType = 'text/plain'; } } // attach the body to the message and set the content-type $message->setBody($body); $message->getHeaders()->get('content-type')->setType($messageType); $message->setEncoding('UTF-8'); if ($emailOptions['send']) { if (isset($emailOptions['smtp']) && $emailOptions['smtp'] == 'google') { $transport = new SmtpTransport(); $options = new SmtpOptions(array('name' => 'casamail.com', 'host' => 'smtp.gmail.com', 'port' => 465, 'connection_class' => 'login', 'connection_config' => array('username' => $emailOptions['smtp_username'], 'password' => $emailOptions['smtp_password'], 'ssl' => 'ssl'))); $transport->setOptions($options); } else { $transport = new SendmailTransport(); } try { $transport->send($message); } catch (\Exception $e) { if (!get_class($transport) == 'Sendmail') { //try with postfix $transport = new SendmailTransport(); $transport->send($message); } } } else { echo '<h1>E-Mail <strong>NOT</strong> sent</h1>'; } return $content; }
/** * @param string $emailAddress */ public function addCcRecipient($emailAddress) { $this->message->addCc($emailAddress); }
/** * pack tagged array of data to SendMessage format * * * @param Array $mailArray * * return array of data that will be converted to * send message * * @return Array */ public function packData($mailArray) { $mimeMail = new Message(); $textPart = $this->packText($mailArray['text'], $mailArray['header']['content-type']); unset($mailArray['header']['content-type']); $attachmentParts = $this->packAttachments($mailArray['link']); if (count($attachmentParts)) { $mimeMail->addPart($textPart); foreach ($attachmentParts as $part) { $mimeMail->addPart($part); } } else { $mimeMail->addPart($textPart); } $returnMail = new SendMessage(); $returnMail->setBody($mimeMail); foreach ($mailArray['header'] as $header => $value) { switch ($header) { case 'references': if (is_array($value)) { $res = ''; foreach ($value as $reference) { $res .= $reference . ' '; } } elseif (is_string($value)) { $res = $value; } else { continue; } $headers = $returnMail->getHeaders(); $headers->addHeaderLine($header, $res); $returnMail->setHeaders($headers); break; case 'bcc': $returnMail->addBcc($value); break; case 'cc': $returnMail->addCc($value); break; case 'to': $returnMail->addTo($value); break; case 'from': $returnMail->addFrom($value); break; case 'reply-to': $returnMail->addReplyTo($value); break; case 'subject': $returnMail->setSubject($value); break; default: $headers = $returnMail->getHeaders(); $headers->addHeaderLine($header, $value); $returnMail->setHeaders($headers); break; } } return $returnMail; }
public function send() { # differ the following scenarios: # - plain text email # - plain text email with 1 or n attachments # - html email with text alternative # - html email with text alternative and 1 or n attachments $content = new Mime\Message(); if (!$this->isHtmlMessage()) { $content->addPart($this->getTextMessage()); } else { $content->addPart($this->getTextMessage()); $content->addPart($this->getHtmlMessage()); } if (count($this->getAttachments()) == 0) { $body = $content; } else { $contentPart = new Mime\Part($content->generateMessage()); $contentPart->type = 'multipart/alternative;' . PHP_EOL . ' boundary="' . $content->getMime()->boundary() . '"'; $body = new Mime\Message(); $body->addPart($contentPart); foreach ($this->getAttachments() as $att) { $body->addPart($att); } } $message = new Mail\Message(); $message->setEncoding('utf-8'); $message->setBody($body); if ($this->isHtmlMessage()) { if (count($this->getAttachments()) == 0) { $message->getHeaders()->get('content-type')->addParameter('charset', 'utf-8')->setType('multipart/alternative'); } else { $message->getHeaders()->get('content-type')->addParameter('charset', 'utf-8')->setType('multipart/mixed'); // Important to get all attachments into this email. } } else { $message->getHeaders()->get('content-type')->addParameter('charset', 'utf-8')->setType('text/plain'); } foreach ($this->getTo() as $user) { $message->addTo($user->getEmail()); } foreach ($this->getCc() as $user) { $message->addCc($user->getEmail()); } foreach ($this->getBcc() as $user) { $message->addBcc($user->getEmail()); } $message->addFrom($this->getFrom()); $message->setSubject($this->getSubject()); $transport = new Mail\Transport\Sendmail(); $transport->send($message); }
public function detailsAction() { $decision_no = (int) $this->params()->fromRoute('id', 0); if (!$decision_no) { return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden')); } $this->init(); $fm = $this->flashMessenger(); $success = 0 < $this->ctrlLv ? true : false; if (!$success) { return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden')); } $fm = $this->flashMessenger(); $decisionTable = new DecisionTable(); $loggedin_user_no = $this->auth()->get('user_no'); try { $decisionDetails = $decisionTable->getApprovalDetails($decision_no, $loggedin_user_no); $approversList = $decisionTable->getApproverList($decisionDetails['decision_no'], $this->auth()->get('user_no')); $approvalAttachments = $decisionTable->getApprovalAttachments($decision_no); } catch (\Exception $e) { $this->flashMessenger()->addMessage("Fatal Error! " . $e->getMessage()); return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden')); } $continue = false; foreach ($approversList as $approver) { if ($approver["user_no"] == $loggedin_user_no || $loggedin_user_no == $decisionDetails['create_user']) { $continue = true; break; } } if (!$continue) { $this->flashMessenger()->addMessage("You must be 1 of its approver in order to view this resource.."); return $this->redirect()->toRoute('app', array('controller' => 'failed', 'action' => 'forbidden')); } $form = new ApprovalForm(); $form->setApprovalDetailsForm(); $success = false; $request = $this->getRequest(); if ($request->isPost()) { $form->setData($request->getPost()); $filter = new ApprovalFilter(); $filter->setDetailsFilter(); $form->setInputFilter($filter->getInputFilter()); if ($form->isValid()) { $parram = $this->params(); $mail = new Message(); $mail->setEncoding("UTF-8"); if ($parram->fromPost('approve') != null) { $success = $decisionTable->approveRequest($decision_no, $this->auth()->get('user_no'), $this->params()->fromPost('remarks')); $approver = $decisionTable->getCurrentApprover($decision_no); $progress = $decisionTable->isCompleted($decision_no); if ($progress) { $mail->addFrom(AUTO_MAIL_FROM)->addTo($decisionDetails['email'])->setSubject("Request Completed - " . $decisionDetails['decision_title']); $body_tpl = "Your Request has been approved."; $body_tpl .= "\nFor more details, just click the link below"; $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no']; $body_tpl .= "\n Request: " . $decisionDetails['decision_title']; $body_tpl .= "\n" . "URL:" . BASE_URL . "/approval/details/" . $decision_no; $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***"; $mail->setBody($body_tpl); } else { $mail->addFrom(AUTO_MAIL_FROM)->addTo($approver['email'])->setSubject("Approval Request - " . $decisionDetails['decision_title']); $body_tpl = file_get_contents(APP_DIR . '/tpl/remind-request.txt'); $body_tpl = trim(str_replace("\r\n", "\n", $body_tpl)); $body_tpl = $this->translator()->translate($body_tpl); $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no']; $body_tpl .= "\n Request: " . $decisionDetails['decision_title']; $body_tpl .= "\n" . "URL:" . BASE_URL . "/approval/details/" . $decision_no; $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***"; $mail->setBody($body_tpl); } } else { if ($parram->fromPost('reject') != null) { $success = $decisionTable->rejectRequest($decision_no, $this->auth()->get('user_no'), $this->params()->fromPost('remarks')); $mail->addFrom(AUTO_MAIL_FROM)->addTo($decisionDetails['email'])->setSubject("Request Rejected - " . $decisionDetails['decision_title']); $cc_approver = $decisionTable->getApprovers($decision_no); foreach ($cc_approver as $each_recipient) { $mail->addCc($each_recipient['email']); } $body_tpl = "Request has been rejected by " . $this->auth()->get('user_name'); $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no']; $body_tpl .= "\n Request: " . $decisionDetails['decision_title']; $body_tpl .= "\n\n " . $this->auth()->get('user_name') . ":" . $this->params()->fromPost('remarks') . "\n\n"; $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***"; $mail->setBody($body_tpl); } else { if ($parram->fromPost('recall') != null) { $success = $decisionTable->recallRequest($decision_no, $this->auth()->get('user_no'), $this->params()->fromPost('remarks')); $nextApprover = $decisionTable->nextApprover($decision_no); $mail->addFrom(AUTO_MAIL_FROM)->addCc($nextApprover['email'])->addBcc($decisionDetails['email'])->setSubject("Approval Recall - " . $decisionDetails['decision_title']); $recipients = $decisionTable->getApprovers($decision_no); foreach ($recipients as $each_recipient) { $mail->addTo($each_recipient['email']); } $body_tpl = "Request has been recalled by " . $this->auth()->get('user_name') . " san"; $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no']; $body_tpl .= "\n Subject: " . $decisionDetails['decision_title']; $body_tpl .= "\n\n " . $this->auth()->get('user_name') . ":" . $this->params()->fromPost('remarks') . "\n\n"; $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***"; $mail->setBody($body_tpl); } else { if ($parram->fromPost('recall-by-owner') != null) { $success = $decisionTable->recallByOwner($decision_no, $this->auth()->get('user_no'), $this->params()->fromPost('remarks')); $mail->addFrom(AUTO_MAIL_FROM)->setSubject("Approval Recall by Requestor - " . $decisionDetails['decision_title']); $recipients = $decisionTable->getApprovers($decision_no); foreach ($recipients as $each_recipient) { $mail->addTo($each_recipient['email']); } $body_tpl = "Request has been recalled by applicant - " . $decisionDetails['user_name']; $body_tpl .= "\n\n\n Reference no.: " . $decisionDetails['ref_no']; $body_tpl .= "\n Subject: " . $decisionDetails['decision_title']; $body_tpl .= "\n\n " . $decisionDetails['user_name'] . ":" . $this->params()->fromPost('remarks') . "\n\n"; $body_tpl .= "\n\n *** This is an automatically generated email, please do not reply ***"; $mail->setBody($body_tpl); } } } } if ($success) { $transport = new SmtpTransport(); $options = new SmtpOptions(array('host' => 'smtp.gmail.com', 'connection_class' => 'plain', 'connection_config' => array('ssl' => 'tls', 'username' => AUTO_MAIL_FROM, 'password' => AUTO_MAIL_FROM_PASSWORD), 'port' => 587)); $transport->setOptions($options); $success = $transport->send($mail); } else { if ($success && IS_TEST) { $logger = new \Zend\Log\Logger(); $writer = new \Zend\Log\Writer\Stream(APP_DIR . '/log/debug.txt'); $logger->addWriter($writer); $logger->log(\Zend\Log\Logger::DEBUG, print_r($mail, 1)); } } return $this->redirect()->toRoute('app', array('controller' => 'approval', 'action' => 'details', 'id' => $decision_no)); } } $values = array('ctrlLv' => $this->ctrlLv, 'admin' => $this->auth()->get('admin'), 'user_log' => $loggedin_user_no, 'approver' => $this->auth()->get('approver'), 'decisionDetails' => $decisionDetails, 'approversList' => $approversList, 'approvalAttachments' => $approvalAttachments, 'form' => $form, 'id' => $decision_no); $view = new ViewModel($values); $view->setTemplate('/' . VIEW_DIR . '/approval/details.phtml'); return $view; }
/** * Prepare email to send. */ private function prepare($email) { //Template Variables $templateVars = $this->config["template_vars"]; $templateVars = array_merge($templateVars, $email->toArray()); //If not layout, use default if (!$email->getLayoutName()) { $email->setLayoutName($this->config["defaults"]["layout_name"]); } //If not recipient, send to admin if (count($email->getTo()) == 0) { $email->addTo($this->config["emails"]["admin"]); } //If not sender, use default if (!$email->getFrom()) { $email->setFrom($this->config["defaults"]["from_email"]); $email->setFromName($this->config["defaults"]["from_name"]); } //Render system $renderer = new PhpRenderer(); $resolver = new AggregateResolver(); $stack = new TemplatePathStack(); foreach ($this->config["template_path_stack"] as $path) { $stack->addPath($path); } $resolver->attach($stack); $renderer->setResolver($resolver); // Subject if (!$email->getSubject()) { $subjectView = $this->createView($templateVars, "subject", $email->getTemplateName()); try { $email->setSubject($renderer->render($subjectView)); } catch (\Exception $e) { $email->setSubject(null); } } // Text Content if (!$email->getTextContent()) { $textView = $this->createView($templateVars, "txt", $email->getTemplateName()); $layoutTextView = new ViewModel($templateVars); $layoutTextView->setTemplate("/layout/txt/" . $email->getLayoutName()); try { $layoutTextView->setVariable("content", $renderer->render($textView)); $email->setTextContent($renderer->render($layoutTextView)); } catch (\Exception $e) { $email->setTextContent(null); } } // Html Content if (!$email->getHtmlContent()) { $htmlView = $this->createView($templateVars, "html", $email->getTemplateName()); $layoutHtmlView = new ViewModel($templateVars); $layoutHtmlView->setTemplate("/layout/html/" . $email->getLayoutName()); try { $layoutHtmlView->setVariable("content", $renderer->render($htmlView)); $email->setHtmlContent($renderer->render($layoutHtmlView)); } catch (\Exception $e) { $email->setHtmlContent(null); } } //Create Zend Message $message = new Message(); //From $message->setFrom($email->getFrom(), $email->getFromName()); //Reply to if ($this->config["defaults"]["reply_to"]) { $message->addReplyTo($this->config["defaults"]["reply_to"], $this->config["defaults"]["reply_to_name"]); } if ($email->getReplyTo()) { $message->addReplyTo($email->getReplyTo(), $email->getReplyToName()); } //To recipients foreach ($email->getTo() as $emailAddress => $user) { if (is_object($user)) { if ($user->getMailOpt()) { $message->addTo($emailAddress, $user->getFullName()); } } else { $message->addTo($emailAddress, $user); } } //Cc recipients foreach ($email->getCc() as $emailAddress => $name) { if (is_object($user)) { if ($user->getMailOpt()) { $message->addCc($emailAddress, $user->getFullName()); } } else { $message->addCc($emailAddress, $user); } } //Bcc recipients foreach ($email->getBcc() as $emailAddress => $name) { if (is_object($user)) { if ($user->getMailOpt()) { $message->addBcc($emailAddress, $user->getFullName()); } } else { $message->addBcc($emailAddress, $user); } } //Subject if ($email->getSubject()) { $message->setSubject($email->getSubject()); } // Body Multipart // Issue - not able to send TXT and HTML multibody // http://framework.zend.com/issues/browse/ZF2-196 /* if($textContent) { $textContent = new MimePart($textContent); $textContent->type = "text/plain"; } if($htmlContent) { $htmlContent = new MimePart($htmlContent); $htmlContent->type = "text/html"; } $body = new MimeMessage(); $body->setParts(array($textContent, $htmlContent)); $message->setBody($body); $message->getHeaders()->get('content-type')->setType('multipart/alternative'); */ //Body (Just html email right now) $htmlContent = new MimePart($email->getHtmlContent()); $htmlContent->type = "text/html"; $body = new MimeMessage(); $body->setParts(array($htmlContent)); $message->setBody($body); return $message; }