public function testSetFromName() { $email = new SendGrid\Email(); $this->assertFalse($email->getFromName()); $email->setFromName("Swift"); $this->assertEquals("Swift", $email->getFromName()); }
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); }
/** * {@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(); }
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.');
/** * Send mail, similar to PHP's mail * * A true return value does not automatically mean that the user received the * email successfully. It just only means that the method used was able to * process the request without any errors. * * Using the two 'wp_mail_from' and 'wp_mail_from_name' hooks allow from * creating a from address like 'Name <*****@*****.**>' when both are set. If * just 'wp_mail_from' is set, then just the email address will be used with no * name. * * The default content type is 'text/plain' which does not allow using HTML. * However, you can set the content type of the email by using the * 'wp_mail_content_type' filter. * * The default charset is based on the charset used on the blog. The charset can * be set using the 'wp_mail_charset' filter. * * @since 1.2.1 * @uses apply_filters() Calls 'wp_mail' hook on an array of all of the parameters. * @uses apply_filters() Calls 'wp_mail_from' hook to get the from email address. * @uses apply_filters() Calls 'wp_mail_from_name' hook to get the from address name. * @uses apply_filters() Calls 'wp_mail_content_type' hook to get the email content type. * @uses apply_filters() Calls 'wp_mail_charset' hook to get the email charset * * @param string|array $to Array or comma-separated list of email addresses to send message. * @param string $subject Email subject * @param string $message Message contents * @param string|array $headers Optional. Additional headers. * @param string|array $attachments Optional. Files to attach. * @return bool Whether the email contents were sent successfully. */ function wp_mail($to, $subject, $message, $headers = '', $attachments = array()) { $header_is_object = false; if ($headers instanceof SendGrid\Email) { $header_is_object = true; $mail = $headers; // Compact the input, apply the filters, and extract them back out - empty header extract(apply_filters('wp_mail', compact('to', 'subject', 'message', '', 'attachments'))); } else { $mail = new SendGrid\Email(); // Compact the input, apply the filters, and extract them back out extract(apply_filters('wp_mail', compact('to', 'subject', 'message', 'headers', 'attachments'))); } $method = Sendgrid_Tools::get_send_method(); // prepare attachments $attached_files = array(); if (!empty($attachments)) { if (!is_array($attachments)) { $pos = strpos(',', $attachments); if (false !== $pos) { $attachments = preg_split('/,\\s*/', $attachments); } else { $attachments = explode("\n", str_replace("\r\n", "\n", $attachments)); } } if (is_array($attachments)) { foreach ($attachments as $attachment) { if (file_exists($attachment)) { $attached_files[] = $attachment; } } } } // Headers $cc = array(); $bcc = array(); $unique_args = array(); $from_name = $mail->getFromName(); $from_email = $mail->getFrom(); $replyto = $mail->getReplyTo(); if (false === $header_is_object) { if (empty($headers)) { $headers = array(); } else { if (!is_array($headers)) { // Explode the headers out, so this function can take both // string headers and an array of headers. $tempheaders = explode("\n", str_replace("\r\n", "\n", $headers)); } else { $tempheaders = $headers; } $headers = array(); // If it's actually got contents if (!empty($tempheaders)) { // Iterate through the raw headers foreach ((array) $tempheaders as $header) { if (false === strpos($header, ':')) { if (false !== stripos($header, 'boundary=')) { $parts = preg_split('/boundary=/i', trim($header)); $boundary = trim(str_replace(array("'", '"'), '', $parts[1])); } continue; } // Explode them out list($name, $content) = explode(':', trim($header), 2); // Cleanup crew $name = trim($name); $content = trim($content); switch (strtolower($name)) { // Mainly for legacy -- process a From: header if it's there case 'from': if (false !== strpos($content, '<')) { // So... making my life hard again? $from_name = substr($content, 0, strpos($content, '<') - 1); $from_name = str_replace('"', '', $from_name); $from_name = trim($from_name); $from_email = substr($content, strpos($content, '<') + 1); $from_email = str_replace('>', '', $from_email); $from_email = trim($from_email); } else { $from_email = trim($content); } break; case 'content-type': if (false !== strpos($content, ';')) { list($type, $charset) = explode(';', $content); $content_type = trim($type); if (false !== stripos($charset, 'charset=')) { $charset = trim(str_replace(array('charset=', '"'), '', $charset)); } elseif (false !== stripos($charset, 'boundary=')) { $boundary = trim(str_replace(array('BOUNDARY=', 'boundary=', '"'), '', $charset)); $charset = ''; } } else { $content_type = trim($content); } break; case 'cc': $cc = array_merge((array) $cc, explode(',', $content)); foreach ($cc as $key => $recipient) { $cc[$key] = trim($recipient); } break; case 'bcc': $bcc = array_merge((array) $bcc, explode(',', $content)); foreach ($bcc as $key => $recipient) { $bcc[$key] = trim($recipient); } break; case 'reply-to': $replyto = $content; break; case 'unique-args': if (false !== strpos($content, ';')) { $unique_args = explode(';', $content); } else { $unique_args = (array) trim($content); } foreach ($unique_args as $unique_arg) { if (false !== strpos($content, '=')) { list($key, $val) = explode('=', $unique_arg); $mail->addUniqueArg(trim($key), trim($val)); } } break; case 'template': $template_ok = Sendgrid_Tools::check_template(trim($content)); if ($template_ok) { $mail->setTemplateId(trim($content)); } elseif (Sendgrid_Tools::get_template()) { $mail->setTemplateId(Sendgrid_Tools::get_template()); } break; case 'categories': $categories = explode(',', trim($content)); foreach ($categories as $category) { $mail->addCategory($category); } break; case 'x-smtpapi-to': $xsmtpapi_tos = explode(',', trim($content)); foreach ($xsmtpapi_tos as $xsmtpapi_to) { $mail->addSmtpapiTo($xsmtpapi_to); } break; case 'substitutions': if (false !== strpos($content, ';')) { $substitutions = explode(';', $content); } else { $substitutions = (array) trim($content); } foreach ($substitutions as $substitution) { if (false !== strpos($content, '=')) { list($key, $val) = explode('=', $substitution); $mail->addSubstitution('%' . trim($key) . '%', explode(',', trim($val))); } } break; case 'sections': if (false !== strpos($content, ';')) { $sections = explode(';', $content); } else { $sections = (array) trim($content); } foreach ($sections as $section) { if (false !== strpos($content, '=')) { list($key, $val) = explode('=', $section); $mail->addSection('%' . trim($key) . '%', trim($val)); } } break; default: // Add it to our grand headers array $headers[trim($name)] = trim($content); break; } } } } } // From email and name // If we don't have a name from the input headers if (!isset($from_name) or !$from_name) { $from_name = stripslashes(Sendgrid_Tools::get_from_name()); } /* If we don't have an email from the input headers default to wordpress@$sitename * Some hosts will block outgoing mail from this address if it doesn't exist but * there's no easy alternative. Defaulting to admin_email might appear to be another * option but some hosts may refuse to relay mail from an unknown domain. See * http://trac.wordpress.org/ticket/5007. */ if (!isset($from_email)) { $from_email = trim(Sendgrid_Tools::get_from_email()); if (!$from_email) { // Get the site domain and get rid of www. $sitename = strtolower($_SERVER['SERVER_NAME']); if (!$sitename and 'smtp' == $method) { return false; } if ('www.' == substr($sitename, 0, 4)) { $sitename = substr($sitename, 4); } $from_email = "wordpress@{$sitename}"; } } // Plugin authors can override the potentially troublesome default $from_email = apply_filters('wp_mail_from', $from_email); $from_name = apply_filters('wp_mail_from_name', $from_name); // Set destination addresses if (!is_array($to)) { $to = explode(',', $to); } // Add any CC and BCC recipients if (!empty($cc)) { foreach ((array) $cc as $key => $recipient) { // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>" if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) { if (count($matches) == 3) { $cc[$key] = trim($matches[2]); } } } } if (!empty($bcc)) { foreach ((array) $bcc as $key => $recipient) { // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>" if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) { if (3 == count($matches)) { $bcc[$key] = trim($matches[2]); } } } } $toname = array(); foreach ((array) $to as $key => $recipient) { $toname[$key] = " "; // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>" if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) { if (3 == count($matches)) { $to[$key] = trim($matches[2]); $toname[$key] = trim($matches[1]); } } } // Set Content-Type from header of from global variable $global_content_type = Sendgrid_Tools::get_content_type(); if (!isset($content_type)) { if (!$global_content_type or 'plaintext' == $global_content_type) { $content_type = 'text/plain'; } elseif ('html' == $global_content_type) { $content_type = 'text/html'; } else { $content_type = 'text/plain'; } } if (!array_key_exists('sendgrid_override_template', $GLOBALS['wp_filter'])) { $template = Sendgrid_Tools::get_template(); if ($template) { $mail->setTemplateId($template); } } else { $message = apply_filters('sendgrid_override_template', $message, $content_type); } $content_type = apply_filters('wp_mail_content_type', $content_type); $mail->setSubject($subject)->setText($message)->addCategory(SENDGRID_CATEGORY)->setFrom($from_email); if ('api' == $method) { $mail->addTo($to, $toname); } else { $mail->addTo($to); } $categories = explode(',', Sendgrid_Tools::get_categories()); foreach ($categories as $category) { $mail->addCategory($category); } // send HTML content if ('text/plain' !== $content_type) { $mail->setHtml(Sendgrid_Tools::remove_all_tag_urls($message)); } // set from name if ($from_email) { $mail->setFromName($from_name); } // set from cc if (count($cc)) { $mail->setCcs($cc); } // set from bcc if (count($bcc)) { $mail->setBccs($bcc); } if (!isset($replyto)) { $replyto = trim(Sendgrid_Tools::get_reply_to()); } $reply_to_found = preg_match('/.*<(.*)>.*/i', $replyto, $result); if ($reply_to_found) { $replyto = $result[1]; } $mail->setReplyTo($replyto); // add attachemnts if (count($attached_files)) { $mail->setAttachments($attached_files); } $sendgrid = Sendgrid_WP::get_instance(); if (!$sendgrid) { return false; } return $sendgrid->send($mail); }
/** * @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; } }
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); }
/** * Send mail, similar to PHP's mail * * A true return value does not automatically mean that the user received the * email successfully. It just only means that the method used was able to * process the request without any errors. * * Using the two 'wp_mail_from' and 'wp_mail_from_name' hooks allow from * creating a from address like 'Name <*****@*****.**>' when both are set. If * just 'wp_mail_from' is set, then just the email address will be used with no * name. * * The default content type is 'text/plain' which does not allow using HTML. * However, you can set the content type of the email by using the * 'wp_mail_content_type' filter. * * The default charset is based on the charset used on the blog. The charset can * be set using the 'wp_mail_charset' filter. * * @since 1.2.1 * @uses apply_filters() Calls 'wp_mail' hook on an array of all of the parameters. * @uses apply_filters() Calls 'wp_mail_from' hook to get the from email address. * @uses apply_filters() Calls 'wp_mail_from_name' hook to get the from address name. * @uses apply_filters() Calls 'wp_mail_content_type' hook to get the email content type. * @uses apply_filters() Calls 'wp_mail_charset' hook to get the email charset * * @param string|array $to Array or comma-separated list of email addresses to send message. * @param string $subject Email subject * @param string $message Message contents * @param string|array $headers Optional. Additional headers. * @param string|array $attachments Optional. Files to attach. * @return bool Whether the email contents were sent successfully. */ function wp_mail($to, $subject, $message, $headers = '', $attachments = array()) { $sendgrid = new SendGrid(Sendgrid_Tools::get_username(), Sendgrid_Tools::get_password()); $mail = new SendGrid\Email(); $method = Sendgrid_Tools::get_send_method(); // Compact the input, apply the filters, and extract them back out extract(apply_filters('wp_mail', compact('to', 'subject', 'message', 'headers', 'attachments'))); // prepare attachments $attached_files = array(); if (!empty($attachments)) { if (!is_array($attachments)) { $pos = strpos(',', $attachments); if (false !== $pos) { $attachments = preg_split('/,\\s*/', $attachments); } else { $attachments = explode("\n", str_replace("\r\n", "\n", $attachments)); } } if (is_array($attachments)) { foreach ($attachments as $attachment) { if (file_exists($attachment)) { $attached_files[] = $attachment; } } } } // Headers $cc = array(); $bcc = array(); if (empty($headers)) { $headers = array(); } else { if (!is_array($headers)) { // Explode the headers out, so this function can take both // string headers and an array of headers. $tempheaders = explode("\n", str_replace("\r\n", "\n", $headers)); } else { $tempheaders = $headers; } $headers = array(); // If it's actually got contents if (!empty($tempheaders)) { // Iterate through the raw headers foreach ((array) $tempheaders as $header) { if (false === strpos($header, ':')) { if (false !== stripos($header, 'boundary=')) { $parts = preg_split('/boundary=/i', trim($header)); $boundary = trim(str_replace(array("'", '"'), '', $parts[1])); } continue; } // Explode them out list($name, $content) = explode(':', trim($header), 2); // Cleanup crew $name = trim($name); $content = trim($content); switch (strtolower($name)) { // Mainly for legacy -- process a From: header if it's there case 'from': if (false !== strpos($content, '<')) { // So... making my life hard again? $from_name = substr($content, 0, strpos($content, '<') - 1); $from_name = str_replace('"', '', $from_name); $from_name = trim($from_name); $from_email = substr($content, strpos($content, '<') + 1); $from_email = str_replace('>', '', $from_email); $from_email = trim($from_email); } else { $from_email = trim($content); } break; case 'content-type': if (false !== strpos($content, ';')) { list($type, $charset) = explode(';', $content); $content_type = trim($type); if (false !== stripos($charset, 'charset=')) { $charset = trim(str_replace(array('charset=', '"'), '', $charset)); } elseif (false !== stripos($charset, 'boundary=')) { $boundary = trim(str_replace(array('BOUNDARY=', 'boundary=', '"'), '', $charset)); $charset = ''; } } else { $content_type = trim($content); } break; case 'cc': $cc = array_merge((array) $cc, explode(',', $content)); foreach ($cc as $key => $recipient) { $cc[$key] = trim($recipient); } break; case 'bcc': $bcc = array_merge((array) $bcc, explode(',', $content)); foreach ($bcc as $key => $recipient) { $bcc[$key] = trim($recipient); } break; case 'reply-to': $replyto = $content; break; default: // Add it to our grand headers array $headers[trim($name)] = trim($content); break; } } } } // From email and name // If we don't have a name from the input headers if (!isset($from_name)) { $from_name = Sendgrid_Tools::get_from_name(); } /* If we don't have an email from the input headers default to wordpress@$sitename * Some hosts will block outgoing mail from this address if it doesn't exist but * there's no easy alternative. Defaulting to admin_email might appear to be another * option but some hosts may refuse to relay mail from an unknown domain. See * http://trac.wordpress.org/ticket/5007. */ if (!isset($from_email)) { $from_email = trim(Sendgrid_Tools::get_from_email()); if (!$from_email) { // Get the site domain and get rid of www. $sitename = strtolower($_SERVER['SERVER_NAME']); if ('www.' == substr($sitename, 0, 4)) { $sitename = substr($sitename, 4); } $from_email = "wordpress@{$sitename}"; } } // Plugin authors can override the potentially troublesome default $from_email = apply_filters('wp_mail_from', $from_email); $from_name = apply_filters('wp_mail_from_name', $from_name); // Set destination addresses if (!is_array($to)) { $to = explode(',', $to); } // Add any CC and BCC recipients if (!empty($cc)) { foreach ((array) $cc as $key => $recipient) { // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>" if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) { if (count($matches) == 3) { $cc[$key] = trim($matches[2]); } } } } if (!empty($bcc)) { foreach ((array) $bcc as $key => $recipient) { // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>" if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) { if (3 == count($matches)) { $bcc[$key] = trim($matches[2]); } } } } if ('api' == $method and (count($cc) or count($bcc))) { foreach ((array) $to as $key => $recipient) { // Break $recipient into name and address parts if in the format "Foo <*****@*****.**>" if (preg_match('/(.*)<(.+)>/', $recipient, $matches)) { if (3 == count($matches)) { $to[$key] = trim($matches[2]); } } } } // Set Content-Type and charset // If we don't have a content-type from the input headers if (!isset($content_type)) { $content_type = 'text/plain'; } $content_type = apply_filters('wp_mail_content_type', $content_type); $mail->setTos($to)->setSubject($subject)->setText($message)->addCategory(SENDGRID_CATEGORY)->setFrom($from_email); $categories = explode(',', Sendgrid_Tools::get_categories()); foreach ($categories as $category) { $mail->addCategory($category); } // send HTML content if ('text/plain' !== $content_type) { $mail->setHtml($message); } // set from name if ($from_email) { $mail->setFromName($from_name); } // set from cc if (count($cc)) { $mail->setCcs($cc); } // set from bcc if (count($bcc)) { $mail->setBccs($bcc); } if (!isset($replyto)) { $replyto = trim(Sendgrid_Tools::get_reply_to()); } $reply_to_found = preg_match('/.*<(.*)>.*/i', $replyto, $result); if ($reply_to_found) { $replyto = $result[1]; } $mail->setReplyTo($replyto); // add attachemnts if (count($attached_files)) { $mail->setAttachments($attached_files); } // Send! try { if ('api' == $method) { return wp_send($mail, $sendgrid); } elseif ('smtp' == $method) { if (class_exists('Swift')) { $smtp = new Smtp(Sendgrid_Tools::get_username(), Sendgrid_Tools::get_password()); return $smtp->send($mail); } else { return 'Error: Swift Class not loaded. Please activate Swift plugin or use API.'; } } } catch (Exception $e) { return $e->getMessage(); } return false; }
/** * 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'; }
if (!empty($errors)) { Response::json(400, $errors); } // Get form values $first_name = $form->value('first_name'); $last_name = $form->value('last_name'); $email = $form->value('email'); $province = $form->value('province'); $city = $form->value('city'); $address = $form->value('address'); $zip_code = $form->value('zip_code'); $gift_magazine = $form->value('gift_magazine'); $notes = $form->value('notes'); // Message template $message_body = file_get_contents('../templates/_email_subscription.html'); $message_body = str_replace(array('{{ first_name }}', '{{ last_name }}', '{{ email }}', '{{ province }}', '{{ city }}', '{{ address }}', '{{ zip_code }}', '{{ gift_magazine }}', '{{ notes }}'), array($first_name, $last_name, $email, $province, $city, $address, $zip_code, $gift_magazine, $notes), $message_body); // Mail build $mailer = new SendGrid(Config::$SENDGRID_USERNAME, Config::$SENDGRID_PASSWORD, Config::$SENDGRID_OPTIONS); $message = new SendGrid\Email(); $message->addTo(Config::$SUBCRIPTION_FORM_TO); $message->setReplyTo($email); $message->setFrom($email); $message->setFromName('Subscripciones Jedbangers'); $message->setSubject('Nuevo suscriptor | ' . $first_name . ' ' . $last_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_subscription']); Response::json(200, 'Gracias! El mensaje fue enviado. Te responderemos a la brevedad.');
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; }
/** * 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; }