예제 #1
0
 public function testSendResponseWithSslOptionFalse()
 {
     $sendgrid = new SendGrid("foo", "bar", array("switch_off_ssl_verification" => true));
     $email = new SendGrid\Email();
     $email->setFrom('*****@*****.**')->setSubject('foobar subject')->setText('foobar text')->addTo('*****@*****.**')->addAttachment('./text');
     $response = $sendgrid->send($email);
     $this->assertEquals("Bad username / password", $response->errors[0]);
 }
 public function testSetFrom()
 {
     $email = new SendGrid\Email();
     $email->setFrom("*****@*****.**");
     $email->setFromName("John Doe");
     $this->assertEquals("*****@*****.**", $email->getFrom());
     $this->assertEquals(array("*****@*****.**" => "John Doe"), $email->getFrom(true));
 }
 public function testConstruction()
 {
     $sendgrid = new SendGrid("foo", "bar");
     $smtp = $sendgrid->smtp;
     $this->assertEquals(new SendGrid\Smtp("foo", "bar"), $smtp);
     $message = new SendGrid\Email();
     $message->setFrom('*****@*****.**')->setFromName('John Doe')->setSubject('foobar subject')->setText('foobar text')->addTo('*****@*****.**')->addAttachment("mynewattachment.jpg");
     $this->assertEquals(get_class($smtp), 'SendGrid\\Smtp');
     $this->setExpectedException('SendGrid\\AuthException');
     $smtp->send($message);
 }
예제 #4
0
 /**
  * Test sending a request with bad credentials and SSL verification off.
  */
 public function testSendResponseWithSslOptionFalse()
 {
     $sendgrid = new \SendGrid\Client('token123456789', ['switch_off_ssl_verification' => TRUE]);
     $email = new \SendGrid\Email();
     $email->setFrom('*****@*****.**')->setSubject('foobar subject')->setText('foobar text')->addTo('*****@*****.**')->addAttachment('./tests/text');
     try {
         $response = $sendgrid->send($email);
     } catch (\GuzzleHttp\Exception\ClientException $e) {
         $response = $e->getResponse();
         $responseBodyAsString = $response->getBody()->getContents();
     }
     $this->assertContains('The provided authorization grant is invalid, expired, or revoked', $responseBodyAsString);
 }
예제 #5
0
 function sendPlain($to, $from, $subject, $plainContent, $attachedFiles = false, $customheaders = false)
 {
     $mail = new SendGrid\Email();
     $sendgrid = $this->instanciate();
     $to = explode(',', $to);
     foreach ($to as $s1) {
         $mail->addTo(trim($s1));
     }
     $mail->setFrom(trim($from));
     $mail->setSubject($subject);
     $mail->setText($plainContent);
     $sendgrid->send($mail);
 }
 public function deliver($message)
 {
     $sendgrid = new \SendGrid($this->username, $this->password, $this->options);
     $email = new \SendGrid\Email();
     $to = $message->getTo();
     if (is_array($to)) {
         foreach ($to as $rcpt) {
             $email->addTo($rcpt);
         }
     } else {
         $email->addTo($to);
     }
     $email->setFrom($this->from)->setFromName($this->from_name)->setSubject($message->getSubject())->setText($message->renderText())->setHtml($message->renderHtml());
     $sendgrid->send($email);
 }
예제 #7
0
 protected function sendEmail($to, $subj, $text, $html = null)
 {
     $email = new \SendGrid\Email();
     $email->addCategory($subj);
     $email->addTo($to);
     $email->setFrom('*****@*****.**');
     $email->setFromName('Edge conf');
     $email->setSubject($subj);
     $email->setText($text);
     if ($html) {
         $emogrifier = new \Pelago\Emogrifier($html, file_get_contents(realpath(__DIR__ . '/../../../public/css/email.css')));
         $email->setHtml($emogrifier->emogrify());
     }
     $sendgrid = new \SendGrid($this->app->config->sendgrid->username, $this->app->config->sendgrid->password);
     $resp = $sendgrid->send($email);
 }
예제 #8
0
 public function send(array $options)
 {
     $connection = $this->getConnection();
     $email = new \SendGrid\Email();
     $options = array_replace_recursive($this->defaults, $options);
     foreach ((array) $options['to'] as $to) {
         $email->addTo($to);
     }
     foreach ((array) $options['cc'] as $cc) {
         $email->addCc($cc);
     }
     foreach ((array) $options['bcc'] as $bcc) {
         $email->addBcc($bcc);
     }
     $email->setSubject($options['subject']);
     $email->setFrom($this->getFrom($options));
     if (!empty($options['category'])) {
         $email->setCategory($options['category']);
     }
     if (!empty($options['categories'])) {
         $email->setCategories($options['categories']);
     }
     if (!empty($options['text'])) {
         $email->setText($options['text']);
     }
     if (!empty($options['html'])) {
         $email->setHtml($options['html']);
     } elseif (!empty($options['layout']) && !empty($options['data'])) {
         $path = $this->_app->basePath . '/mail/sendgrid/' . $options['layout'] . '.html';
         if (!file_exists($path)) {
             $message = 'Layout "' . $options['layout'] . '" cannot be found in "/mail/sendgrid/".';
             if ($this->_version == 2) {
                 throw new \yii\web\NotFoundHttpException($message);
             } else {
                 throw new \CHttpException(404, $message);
             }
         }
         $params = array('subject' => $options['subject']);
         foreach ($options['data'] as $key => $value) {
             $params['{{' . $key . '}}'] = $value;
         }
         $html = file_get_contents($path);
         $html = strtr($html, $params);
         $email->setHtml($html);
     }
     return $response = $connection->send($email);
 }
예제 #9
0
 /**
  * {@inheritdoc}
  */
 public function send(Swift_Mime_Message $message, &$failedRecipients = null)
 {
     $sendgrid = new \SendGrid($this->key);
     $email = new \SendGrid\Email();
     list($from, $from_name) = $this->getFromAddresses($message);
     $email->setFrom($from);
     $email->setFromName($from_name);
     $email->setSubject($message->getSubject());
     $email->setHtml($message->getBody());
     $this->setTo($email, $message);
     $this->setCc($email, $message);
     $this->setBcc($email, $message);
     $this->setText($email, $message);
     $this->setAttachment($email, $message);
     $sendgrid->send($email);
     $this->deleteTempAttachments();
 }
예제 #10
0
 /**
  * Send Email
  *
  * Sends email to designated recipient with subject line and message.
  *
  * @param string $sub
  * @param string $msg
  * @return true
  * @throws Exception
  */
 public function send($sub, $msg)
 {
     if (!is_string($sub) && !is_string($msg)) {
         throw new Exception("Email message or subject is not string: " . $sub . ' ' . $msg);
     }
     $email = new \SendGrid\Email();
     $email->setFrom($this->config->get('fromEmail'))->setFromName('Research Botnet')->addTo($this->recipient)->setSubject('Research Botnet: ' . $sub)->setText($msg);
     try {
         $this->sendgrid->send($email);
     } catch (\SendGrid\Exception $e) {
         $errors = '';
         foreach ($e->getErrors() as $er) {
             $errors .= $er . ', ';
         }
         throw new Exception("SendGrid send exception: " . $e->getCode() . ' ' . $errors);
     }
     return true;
 }
예제 #11
0
        if ($roomNumber === NULL) {
            break;
        }
        array_push($classes, $roomNumber["roomNumber"]);
    }
    $outputJSON["roomNumbers"] = $classes;
    echo json_encode($outputJSON);
    return;
});
$app->post('/sendEmail', function () {
    $to = $_POST['to'];
    $html = $_POST['html'];
    //perhaps add destination field for subjects
    $sendgrid = new SendGrid("oxymo", "compassstudios", array("turn_off_ssl_verification" => false));
    $email = new SendGrid\Email();
    $email->setFrom('*****@*****.**')->setSubject('SMU Nav Directions')->setHtml($html)->addTo($to);
    $response1 = $sendgrid->send($email);
    //echo $response1;
    //$this->assertEquals("Bad username / password", $response->errors[0]);
    echo "Success probably!";
});
$app->post('/getCoordinates', function () {
    global $mysqli;
    $bName = $_POST['buildingName'];
    $rName = $_POST['roomName'];
    $rNum = $_POST['roomNumber'];
    if ($rName != null) {
        //getCoordinates by room name
        $firstQuery = $mysqli->query("SELECT x, y, z FROM Coordinates WHERE idCoordinates=\n            (SELECT Coordinates_idCoordinates FROM Location WHERE roomName='{$rName}')");
        $firstResult = $firstQuery->fetch_assoc();
        echo json_encode($firstResult);
예제 #12
0
    echo $row['userhostName'];
    echo $row['userIP'];
    echo $row['userConnection'];
    echo $row['user_auth'];
    echo $row['user_reason'];
    echo $row['user_addInfo'];
}
//------------------------BINDING SendGrid to Bluemix (THIS IS OUR MAIL SERVER ON THE CLOUD (USING THE PHP cURL function-------------------------//
$default_email = "*****@*****.**";
//these "requires" are downloaded from the composer (essential for SendGrid)
require 'vendor/autoload.php';
//require 'vendor/sendgrid/sendgrid/lib/SendGrid.php';
if (filter_var($user_email, FILTER_VALIDATE_EMAIL)) {
    $services = getenv("VCAP_SERVICES");
    $services_json = json_decode($services, true);
    if (isset($services_json["sendgrid"][0]["credentials"])) {
        $sendgrid_config = $services_json["sendgrid"][0]["credentials"];
        $user = $sendgrid_config["username"];
        $pass = $sendgrid_config["password"];
        $url = $sendgrid_config["hostname"];
    }
    $sendgrid = new SendGrid($user, $pass);
    $mail = new SendGrid\Email();
    $mail->setFrom($default_email)->addTo($user_email)->setSubject("IBM Direct Proxy Confirmation")->setText("Just setup a cloud based email server called SendGrid (I binded an instance of it just like the mysql) on Bluemix. Whenever a user submits the form then a confirmation email will be sent to them. Thought I'd test it out and send it to you guys. This should be the result whenever a user submits the form. Hopefully it works!");
    $response = $sendgrid->send($mail);
    echo 'Congrats your email has been sent!';
} else {
    echo 'Your e-mail is not valid. Please try again.';
}
mysql_close();
//close the connection
예제 #13
0
     ====================================================*/
     $sendgrid = new SendGrid($sg_username, $sg_password);
     $mail = new SendGrid\Email();
     /* SEND MAIL
     /  Replace the the address(es) in the setTo/setTos
     /  function with the address(es) you're sending to.
     ====================================================
     'to'      => $row[name].'<'.$row[email].'>',
     				        'subject' => 'Reset Password',
     				        'text'    => 'Hello '.$row[name].', \n \n you just requested reset Password \n\n Please use the below URL to reset the password Or neglect .. note : url is valid for the next hour only... \n \n
     				        http://wolves-cafeteria.rhcloud.com/update-pass.php
     				        '
     
     */
     try {
         $mail->setFrom("*****@*****.**")->addTo($row[email])->setSubject('Reset Password')->setText('Hello ' . $row[name] . ', \\n \\n you just requested reset Password \\n\\n Please use the below URL to reset the password Or neglect .. note : url is valid for the next hour only... \\n \\n http://wolves-cafeteria.rhcloud.com/reset-password.php?code=' . $hash);
         $response = $sendgrid->send($mail);
         if (!$response) {
             throw new Exception("Did not receive response.");
         } else {
             if ($response->message && $response->message == "error") {
                 throw new Exception("Received error: " . join(", ", $response->errors));
             } else {
                 // print_r($response);
             }
         }
     } catch (Exception $e) {
         var_export($e);
     }
 } else {
     echo "DB Error";
예제 #14
0
파일: _Mail.php 프로젝트: kliptonize/Encode
 public function send()
 {
     //ARCHIVE THIS EMAIL
     if ($this->archive) {
         $rand = substr(md5(rand(0, 100) . date("dmyHis")), -10);
         //Set url in HTML body
         $this->HTMLBody = str_replace("[[ARCHIVE]]", LINK_BASE . "archive/" . $rand . ".html", $this->HTMLBody);
     }
     //Remove all variables ([[var]]) in template, if necessairy
     while (($startpos = strpos($this->HTMLBody, "[[")) !== false) {
         $endpos = strpos(substr($this->HTMLBody, $startpos), "]]") + $startpos;
         $temp = substr($this->HTMLBody, 0, $startpos) . substr($this->HTMLBody, $endpos + 2);
         $this->HTMLBody = $temp;
     }
     //Create the archived document
     if ($this->archive) {
         $doc = new Document("archive/", $rand . '.html');
         if (STAGE == "test") {
             $string = "From: " . $this->from['name'] . ' (' . $this->from['email'] . ')<br/>To: ' . print_r($this->recipients, true) . "<br/>Subject: " . $this->subject . '<br/>';
         } else {
             $string = "";
         }
         $string .= $this->HTMLBody;
         $doc->write($string);
     }
     $email = new SendGrid\Email();
     $email->setFrom($this->from["email"])->setFromName($this->from["name"])->setSubject($this->subject)->setText($this->plainBody)->setHTML($this->HTMLBody)->setHeaders($this->headers);
     //Add recipients
     foreach ($this->recipients as $recipient) {
         switch ($recipient["type"]) {
             case "to":
             default:
                 $email->addTo($recipient['email'], $recipient["name"]);
                 break;
             case "cc":
                 $email->addCc($recipient['email'], $recipient["name"]);
                 break;
             case "bcc":
                 $email->addBcc($recipient['email'], $recipient["name"]);
                 break;
         }
     }
     switch (STAGE) {
         case 'deploy':
         case 'test':
             $result = [];
             try {
                 $result = $this->sendgrid->send($email);
             } catch (\SendGrid\Exception $e) {
                 foreach ($e->getErrors() as $er) {
                     trigger_error("A mail error occured: " . $e->getCode() . " - " . $er, E_USER_ERROR);
                 }
             }
             $sent = array();
             $rejected = array();
             if ($result->code == 200) {
                 array_push($sent, true);
             } else {
                 array_push($rejected, $result->body->message);
             }
             return array("sent" => $sent, "rejected" => $rejected);
             break;
         case 'dev':
         default:
             //Display email in browser, don't send
             print_r($email);
             break;
     }
 }
예제 #15
0
 /**
  * @param string|null $subject
  * @param string|null $template
  * @return bool
  * @throws \SendGrid\Exception
  */
 public function send($subject = null, $template = null)
 {
     if (null !== $subject) {
         $this->setSubject($subject);
     }
     if (null !== $template) {
         $this->setTemplate($template);
     }
     $email = new \SendGrid\Email();
     $email->setFrom($this->fromEmail);
     $email->setFromName($this->fromName);
     $email->setSubject($this->subject);
     $email->setHtml(' ');
     $email->setTemplateId($this->template);
     foreach ($this->recipients as $recipient) {
         /**
          * SendGrid API library requires to use 'addSmtpapiTo' method in case of many recipients.
          * On the other side, it does not allow to mix Smtpapi methods with non-Smtpapi methods, therefore,
          * original methods 'addBcc' and 'addCc' cannot be used here.
          */
         $email->addSmtpapiTo($recipient->getEmail(), $recipient->getName());
     }
     $email->setSubstitutions($this->getLocalVariables());
     $email->setAttachments($this->attachments);
     $this->setSections($email);
     if (null !== $this->replyTo) {
         $email->setReplyTo($this->replyTo);
     }
     if (false === empty($this->headers)) {
         $email->setHeaders($this->headers);
     }
     try {
         $this->sendgrid->send($email);
         $this->cleanAttachments();
         return true;
     } catch (\SendGrid\Exception $e) {
         $this->cleanAttachments();
         throw $e;
     }
 }
 /**
  * Repair data for send message
  *
  * @param array $args
  *
  * @return array
  */
 function generate_postdata($args = array())
 {
     $emailData = new SendGrid\Email();
     $is_force = aem_get_option('aem_force_header', FALSE);
     $header = $this->process_header($args['headers']);
     /**
      * generate postFile
      */
     $emailData->setSubject($args['subject']);
     $emailData->setText($args['subject']);
     //From email
     if (!$is_force && isset($header['from_name'])) {
         $from_email = $header['from_email'];
     } else {
         $from_email = AEM_Option()->get_from_email();
     }
     $from_email = apply_filters('wp_mail_from', $from_email);
     $emailData->setFrom($from_email);
     //From name
     if (!$is_force && isset($header['from_name'])) {
         $from_name = $header['from_name'];
     } else {
         $from_name = AEM_Option()->get_from_name();
     }
     $from_name = apply_filters('wp_mail_from_name', $from_name);
     $emailData->setFromName($from_name);
     //to
     if (!is_array($args['to'])) {
         $args['to'] = explode(',', $args['to']);
     }
     foreach ((array) $args['to'] as $recipient) {
         try {
             // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>"
             $recipient_name = '';
             if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) {
                 if (count($matches) == 3) {
                     $recipient_name = $matches[1];
                     $recipient = $matches[2];
                 }
             }
             $emailData->addTo($recipient, $recipient_name);
         } catch (phpmailerException $e) {
             continue;
         }
     }
     //cc
     if (!empty($header['cc'])) {
         //header cc not empty
         if (empty($args['cc'])) {
             //arg cc empty, override agr cc
             $args['cc'] = $header['cc'];
         } else {
             //arg cc not empty
             if (!is_array($args['cc'])) {
                 $args['cc'] = explode(',', $args['cc']);
             }
             //merge them
             $args['cc'] = array_merge($header['cc']);
         }
     }
     if (!empty($args['cc'])) {
         foreach ((array) $args['cc'] as $recipient) {
             try {
                 // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>"
                 $recipient_name = '';
                 if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) {
                     if (count($matches) == 3) {
                         $recipient_name = $matches[1];
                         $recipient = $matches[2];
                     }
                 }
                 $emailData->addCc($recipient);
             } catch (phpmailerException $e) {
                 continue;
             }
         }
     }
     //bcc
     if (!empty($header['bcc'])) {
         //header bcc not empty
         if (empty($args['bcc'])) {
             //arg bcc empty, override agr cc
             $args['bcc'] = $header['bcc'];
         } else {
             //arg bcc not empty
             if (!is_array($args['bcc'])) {
                 $args['bcc'] = explode(',', $args['bcc']);
             }
             //merge them
             $args['bcc'] = array_merge($header['bcc']);
         }
     }
     if (!empty($args['bcc'])) {
         foreach ((array) $args['bcc'] as $recipient) {
             try {
                 // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>"
                 $recipient_name = '';
                 if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) {
                     if (count($matches) == 3) {
                         $recipient_name = $matches[1];
                         $recipient = $matches[2];
                     }
                 }
                 $emailData->addBcc($recipient);
             } catch (Exception $e) {
                 continue;
             }
         }
     }
     if (!isset($header['content_type'])) {
         $content_type = 'text/plain';
     } else {
         $content_type = $header['content_type'];
     }
     $content_type = apply_filters('wp_mail_content_type', $content_type);
     if ($content_type == "text/html") {
         $emailData->setHtml($args['message']);
     }
     //custom header
     if (isset($args['headers']) && is_array($args['headers'])) {
         //extract header line
         $header_arr = explode("\r\n", $args['headers']);
         foreach ($header_arr as $header) {
             //extract header key:value
             $tmp = explode(':', $header);
             if (count($tmp) > 1) {
                 if ($tmp[1] != NULL) {
                     if (strtolower($tmp[0]) == 'from') {
                         if (aem_get_option('aem_force_header')) {
                             continue;
                         }
                     }
                     $emailData->addHeader($tmp[0], $tmp[1]);
                 }
             }
         }
     }
     //$args['attachments'] = array ( plugin_dir_path( AEM_PLUGIN_FILE )."/inc/ae/assets/img/slider.png" );
     if (!empty($args['attachments'])) {
         $emailData->setAttachments($args['attachments']);
     }
     $postData = apply_filters("aem_postdata", $emailData);
     return $postData;
 }
예제 #17
0
 public function it_sets_mailer_data(\SendGrid $sendGrid)
 {
     $this->setData(['from_name' => 'Master Jedi Yoda', 'from_email' => '*****@*****.**', 'subject' => 'Example subject', 'template' => 'example template', 'recipients' => ['*****@*****.**' => new Recipient('Jane Doe', '*****@*****.**')], 'global_vars' => ['global_one' => 'Example', 'global_two' => 'Another example'], 'local_vars' => ['*****@*****.**' => [new Variable('local', 'Yet another example')]], 'headers' => [], 'reply_to' => null, 'attachments' => []]);
     $email = new \SendGrid\Email();
     $email->setFrom('*****@*****.**');
     $email->setFromName('Master Jedi Yoda');
     $email->addSmtpapiTo('*****@*****.**', 'Jane Doe');
     $email->setSubject('Example subject');
     $email->setHtml(' ');
     $email->setTemplateId('example template');
     $email->setSections(['global_one_SECTION' => 'Example', 'global_two_SECTION' => 'Another example']);
     $email->setSubstitutions(['local' => ['Yet another example'], 'global_one' => ['global_one_SECTION'], 'global_two' => ['global_two_SECTION']]);
     $sendGrid->send($email)->shouldBeCalled();
     $this->send('Example subject', 'example template')->shouldReturn(true);
 }
예제 #18
0
파일: Mail.php 프로젝트: josephsnyder/Midas
 /**
  * Send the mail.
  *
  * @param Midas_Mail $mail mail instance
  * @throws Midas_Service_SendGrid_Exception
  */
 public function sendMail(Midas_Mail $mail)
 {
     if (is_null($this->_client)) {
         $this->_client = new \SendGrid($this->_user, $this->_key, $this->_config);
     }
     $email = new \SendGrid\Email();
     $email->setBccs($mail->getBcc());
     $email->setCcs($mail->getCc());
     $email->setHtml($mail->getBodyHtml(true));
     $email->setFrom($mail->getFrom());
     $email->setReplyTo($mail->getReplyTo());
     $email->setSubject($mail->getSubject());
     $email->setText($mail->getBodyText(true));
     $email->setTos($mail->getTo());
     try {
         $this->_client->send($email);
     } catch (\SendGrid\Exception $exception) {
         throw new Midas_Service_SendGrid_Exception('Could not send mail');
     }
 }
 /**
  * Send email.
  */
 public function sendEmail()
 {
     $emailMessage = $this->emailMessage;
     if ($this->emailAccount == null) {
         $apiUser = Yii::app()->sendGridEmailHelper->apiUsername;
         $apiPassword = Yii::app()->sendGridEmailHelper->apiPassword;
     } else {
         $apiUser = $this->emailAccount->apiUsername;
         $apiPassword = ZurmoPasswordSecurityUtil::decrypt($this->emailAccount->apiPassword);
     }
     $itemData = EmailMessageUtil::getCampaignOrAutoresponderDataByEmailMessage($this->emailMessage);
     $sendgrid = new SendGrid($apiUser, $apiPassword, array("turn_off_ssl_verification" => true));
     $email = new SendGrid\Email();
     $email->setFrom($this->fromUserEmailData['address'])->setFromName($this->fromUserEmailData['name'])->setSubject($emailMessage->subject)->setText($emailMessage->content->textContent)->setHtml($emailMessage->content->htmlContent)->addUniqueArg("zurmoToken", md5(ZURMO_TOKEN))->addHeader('X-Sent-Using', 'SendGrid-API')->addHeader('X-Transport', 'web');
     //Check if campaign and if yes, associate to email.
     if ($itemData != null) {
         list($itemId, $itemClass, $personId) = $itemData;
         $email->addUniqueArg("itemId", $itemId);
         $email->addUniqueArg("itemClass", $itemClass);
         $email->addUniqueArg("personId", $personId);
     }
     foreach ($this->toAddresses as $emailAddress => $name) {
         $email->addTo($emailAddress, $name);
     }
     foreach ($this->ccAddresses as $emailAddress => $name) {
         $email->addCc($emailAddress);
     }
     foreach ($this->bccAddresses as $emailAddress => $name) {
         $email->addBcc($emailAddress);
     }
     //Attachments
     $attachmentsData = array();
     $tempAttachmentPath = Yii::app()->getRuntimePath() . DIRECTORY_SEPARATOR . 'emailAttachments';
     if (!file_exists($tempAttachmentPath)) {
         mkdir($tempAttachmentPath);
     }
     if (!empty($emailMessage->files)) {
         foreach ($emailMessage->files as $file) {
             $fileName = tempnam($tempAttachmentPath, 'zurmo_');
             $fp = fopen($fileName, 'wb');
             fwrite($fp, $file->fileContent->content);
             fclose($fp);
             $email->addAttachment($fileName, $file->name);
             $attachmentsData[] = $fileName;
         }
     }
     $emailMessage->sendAttempts = $emailMessage->sendAttempts + 1;
     $response = $sendgrid->send($email);
     if ($response->message == 'success') {
         //Here we need to check if
         $emailMessage->error = null;
         $emailMessage->folder = EmailFolder::getByBoxAndType($emailMessage->folder->emailBox, EmailFolder::TYPE_SENT);
         $emailMessage->sentDateTime = DateTimeUtil::convertTimestampToDbFormatDateTime(time());
     } elseif ($response->message == 'error') {
         $content = Zurmo::t('EmailMessagesModule', 'Response from Server') . "\n";
         foreach ($response->errors as $error) {
             $content .= $error;
         }
         $emailMessageSendError = new EmailMessageSendError();
         $data = array();
         $data['message'] = $content;
         $emailMessageSendError->serializedData = serialize($data);
         $emailMessage->folder = EmailFolder::getByBoxAndType($emailMessage->folder->emailBox, EmailFolder::TYPE_OUTBOX_ERROR);
         $emailMessage->error = $emailMessageSendError;
     }
     if (count($attachmentsData) > 0) {
         foreach ($attachmentsData as $path) {
             unlink($path);
         }
     }
     $saved = $emailMessage->save(false);
     if (!$saved) {
         throw new FailedToSaveModelException();
     }
 }
예제 #20
0
 public function testToWebFormatWithTo()
 {
     $email = new SendGrid\Email();
     $email->addTo('*****@*****.**');
     $email->setFrom('*****@*****.**');
     $json = $email->toWebFormat();
     $xsmtpapi = json_decode($json["x-smtpapi"]);
     $this->assertEquals($xsmtpapi->to, array('*****@*****.**'));
     $this->assertEquals($json['to'], '*****@*****.**');
 }
예제 #21
0
 /**
  * Sends email via SendGrid service
  * @param string $from
  * @param string $from_name
  * @param string|array $recipients
  * @param string $subject
  * @param string $message
  * @return boolean
  * @author Pavel Klyagin <*****@*****.**>
  */
 protected function sendEmail($from, $from_name, $recipients, $subject, $message)
 {
     $user = $this->getCI()->config->item('sendgrid_api_user');
     $pass = $this->getCI()->config->item('sendgrid_api_pass');
     $options = array('turn_off_ssl_verification' => $this->isSSLAvailable());
     $email = new \SendGrid\Email();
     $email->setTos(array_values($recipients));
     $email->setFrom($from);
     $email->setFromName($from_name);
     $email->setSubject($subject);
     $email->setHtml($message);
     $sendgrid = new \SendGrid($user, $pass, $options);
     $response = $sendgrid->send($email);
     return $response->message == 'success';
 }
 function send_mail($to, $subject, $message, $fromName, $fromEmail, $arr = array())
 {
     $option = get_option('sendgrid');
     $sendgrid = new SendGrid($option['api']);
     $email = new SendGrid\Email();
     if (count($arr)) {
         $email->setFrom($arr['email']);
         $email->setFromName($arr['name']);
     } else {
         $email->setFrom('*****@*****.**');
         $email->setFromName('FinancialInsiders.ca');
     }
     $email->addTo($to);
     $email->setHtml($message);
     $email->setSubject($subject);
     //$email->Body    = $message;
     try {
         $sendgrid->send($email);
     } catch (\SendGrid\Exception $e) {
         echo $e->getCode();
         foreach ($e->getErrors() as $er) {
             echo $er;
         }
     }
     //if(!$mail->Send()) {
     /* echo 'Message could not be sent.';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
        exit; */
     // return false;
     //}
     //echo 'Message has been sent';
     return true;
 }
예제 #23
0
 protected function send_email($email)
 {
     $send_email = FALSE;
     $sendgrid = new SendGrid(getenv("SENDGRID_USERNAME"), getenv("SENDGRID_PASSWORD"));
     $message = '<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/></head><body>';
     $message .= '<div style="background-color:white;font-size:14px;font-family:\'Segoe UI\',Arial,Helvetica,sans-serif">';
     $message .= '<table style="background-color:#000000;width:100%;font-weight:bold;vertical-align:middle" cellspacing="1" cellpadding="3" border="0"><tbody><tr><td style="font-size:14px;font-family:\'Segoe UI\',Arial,Helvetica,sans-serif">';
     $message .= '<img border="0" src="' . base_url('assets/images/logo.png') . '" width="82" height="40"></td></tr></tbody></table>';
     foreach ($email['text'] as $line) {
         $message .= '<p style="background-color:white;font-size:14px;font-family:\'Segoe UI\',Arial,Helvetica,sans-serif">' . $line . '</p>';
     }
     $message .= '<hr noshade="" size="1">';
     $message .= '<div style="background-color:white;font-size:14px;font-family:\'Segoe UI\',Arial,Helvetica,sans-serif"><a style="text-decoration:none" href="https://www.facebook.com/chaarbhai" target="_blank">Chaar Bhai</a><span style="color: white;">0</span></div>';
     $message .= '<div style="color: #888888;background-color:white;font-size:14px;font-family:\'Segoe UI\',Arial,Helvetica,sans-serif"><strong>Note</strong>: This message has been sent from an unattended email box.</div>';
     $message .= '</div></body></html>';
     $mail = new SendGrid\Email();
     foreach ($email['recipients'] as $recipient) {
         if (!empty($recipient['email'])) {
             $mail->addTo($recipient['email'], $recipient['name']);
             $send_email = TRUE;
         }
     }
     if (isset($email['attachments'])) {
         foreach ($email['attachments'] as $attachment) {
             $mail->addAttachment($attachment['path'], $attachment['name']);
         }
     }
     $mail->setFrom('*****@*****.**')->setFromName('Chaar Bhai');
     $mail->setSubject($email['subject']);
     $mail->setHtml($message);
     if ($send_email) {
         //$sendgrid->send($mail);
     }
 }
예제 #24
0
$sg_password = "******";
/* CREATE THE SENDGRID MAIL OBJECT
====================================================*/
$sendgrid = new SendGrid($sg_username, $sg_password);
$mail = new SendGrid\Email();
/* SEND MAIL
/  Replace the the address(es) in the setTo/setTos
/  function with the address(es) you're sending to.
====================================================*/
$name = strip_tags(trim($_POST["name"]));
$name = str_replace(array("\r", "\n"), array(" ", " "), $name);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$message = trim($_POST["message"]);
$email_content = "Name: {$name}\n";
$email_content .= "Email: {$email}\n\n";
$email_content .= "Message:\n{$message}\n";
try {
    $mail->setFrom("*****@*****.**")->addTo("*****@*****.**")->setSubject("You Down?!")->setText($email_content)->setHtml("");
    $response = $sendgrid->send($mail);
    if (!$response) {
        throw new Exception("Did not receive response.");
    } else {
        if ($response->message && $response->message == "error") {
            throw new Exception("Received error: " . join(", ", $response->errors));
        } else {
            print_r($response);
        }
    }
} catch (Exception $e) {
    var_export($e);
}
예제 #25
0
 public function testSendGridExceptionNotThrownWhen200()
 {
     $mockResponse = (object) array('code' => 200, 'body' => (object) array('message' => 'success'));
     $sendgrid = m::mock('SendGrid[postRequest]', array('foo', 'bar'));
     $sendgrid->shouldReceive('postRequest')->once()->andReturn($mockResponse);
     $email = new SendGrid\Email();
     $email->setFrom('*****@*****.**')->setSubject('foobar subject')->setText('foobar text')->addTo('*****@*****.**');
     $response = $sendgrid->send($email);
 }
예제 #26
0
 public function testToWebFormatWithBccName()
 {
     $email = new \SendGrid\Email();
     $email->addBcc('*****@*****.**', 'Frank Foo');
     $email->setFrom('*****@*****.**');
     $json = $email->toWebFormat();
     $this->assertEquals($json['bccname'], ['Frank Foo']);
 }
    Response::json(400, $errors);
}
$form->fill_values();
$errors = $form->validate_format();
if (!empty($errors)) {
    Response::json(400, $errors);
}
// Get form values
$full_name = $form->value('full_name');
$email = $form->value('email');
$reason = $form->value('reason');
$subject = $form->value('subject');
$message = $form->value('message');
// Message template
$message_body = file_get_contents('../templates/_email_contact.html');
$message_body = str_replace(array('{{ full_name }}', '{{ email }}', '{{ reason }}', '{{ subject }}', '{{ message }}'), array($full_name, $email, $REASONS[$reason], $subject, $message), $message_body);
// Mail build
$mailer = new SendGrid(Config::$SENDGRID_USERNAME, Config::$SENDGRID_PASSWORD, Config::$SENDGRID_OPTIONS);
$message = new SendGrid\Email();
$message->addTo(Config::$CONTACT_FORM_TO);
$message->setReplyTo($email);
$message->setFrom($email);
$message->setFromName('Contacto Jedbangers');
$message->setSubject('Contacto | ' . $full_name);
$message->setHtml($message_body);
$response = $mailer->send($message);
if (strcmp($response->message, 'success') !== 0) {
    Response::json(500, 'El mensaje no pudo ser enviado. Error: ' . $response->errors[0]);
}
unset($_SESSION['token_form_contact']);
Response::json(200, 'Gracias! El mensaje fue enviado. Te responderemos a la brevedad.');
예제 #28
-1
 public function dailyCheckKeywordCronJobs()
 {
     $this->load->model('settings_model');
     $this->load->model('ranking_model');
     $this->load->helper('url');
     //  Recipients List
     $recipients = array('*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**');
     $check = $this->settings_model->get_system_value('keyword_cron_jobs_daily_check');
     if ($check == '1') {
         //  Prepare date Ranges
         $getDateRanges = function (DateTime $date) {
             return array('date' => $date->format('Y-m-d'), 'range' => array('from' => $date->format('Y-m-d 00:00:00'), 'to' => $date->format('Y-m-d 23:59:59')));
         };
         $baseUrl = base_url();
         $today = $getDateRanges(new \DateTime());
         $yesterday = $getDateRanges(new \DateTime('-1 day'));
         $result = array();
         //  Collect Statistic
         foreach (array('today' => $today, 'yesterday' => $yesterday) as $key => $date) {
             $total = $this->ranking_model->countKeywordCronJobs(array('dateFrom' => $date['range']['from'], 'dateTo' => $date['range']['to']));
             $success = $this->ranking_model->countKeywordCronJobs(array('dateFrom' => $date['range']['from'], 'dateTo' => $date['range']['to'], 'status' => array(3, 5)));
             if (empty($total)) {
                 continue;
             }
             $successRate = ceil(count($success) / (count($total) / 100));
             $result[$key] = array('total' => $total, 'success' => $success, 'successRate' => $successRate);
         }
         //  Success Rate for today less than 90% - send Email notification
         if (!empty($result['today']['successRate']) && $result['today']['successRate'] < 90) {
             $cronJobsPrepared = array();
             foreach ($result as $key => $value) {
                 foreach ($value['total'] as $cronJob) {
                     $cronJobsPrepared[$key][$cronJob->status][] = $cronJob;
                 }
             }
             $body = $this->load->view('crons/keyword_cron_jobs_daily_check.php', array('date' => $today['date'], 'baseUrl' => $baseUrl, 'successRate' => $result['today']['successRate'], 'cronJobsPrepared' => $cronJobsPrepared, 'previousSuccessRate' => $result['yesterday']['successRate']), true);
             $subject = "Keywords cron jobs - success rate {$result['today']['successRate']}% ({$today['date']} - {$baseUrl})";
             $user = $this->config->item('sendgrid_api_user');
             $pass = $this->config->item('sendgrid_api_pass');
             $email = new \SendGrid\Email();
             $email->setTos($recipients);
             $email->setFrom('*****@*****.**');
             $email->setSubject($subject);
             $email->setHtml($body);
             $sendgrid = new \SendGrid($user, $pass);
             $sendgrid->send($email);
         }
     }
 }