public function bp_email(BP_Email $email)
 {
     $recipients = $email->get_to();
     $to = array();
     foreach ($recipients as $recipient) {
         $to[] = $recipient->get_address();
     }
     $subject = $email->get_subject('replace-tokens');
     $message = normalize_whitespace($email->get_content_plaintext('replace-tokens'));
     $filter_set = false;
     if ('plaintext' != Sendgrid_Tools::get_content_type()) {
         add_filter('wp_mail_content_type', array($this, 'set_html_content_type'), 100);
         $filter_set = true;
         $message = $email->get_template('add-content');
     }
     $result = wp_mail($to, $subject, $message);
     if ($filter_set) {
         remove_filter('wp_mail_content_type', array($this, 'set_html_content_type'));
     }
     return $result;
 }
 /**
  * Display SendGrid settings page content
  *
  * @return void
  */
 public static function show_settings_page()
 {
     $response = null;
     $error_from_update = false;
     if ('POST' == $_SERVER['REQUEST_METHOD'] and !isset($_POST['sg_dismiss_widget_notice'])) {
         $response = self::do_post($_POST);
         if (isset($response['status']) and $response['status'] == 'error') {
             $error_from_update = true;
         }
     }
     $status = '';
     $message = '';
     $user = Sendgrid_Tools::get_username();
     $password = Sendgrid_Tools::get_password();
     $api_key = Sendgrid_Tools::get_api_key();
     $send_method = Sendgrid_Tools::get_send_method();
     $auth_method = Sendgrid_Tools::get_auth_method();
     $name = stripslashes(Sendgrid_Tools::get_from_name());
     $email = Sendgrid_Tools::get_from_email();
     $reply_to = Sendgrid_Tools::get_reply_to();
     $categories = stripslashes(Sendgrid_Tools::get_categories());
     $template = stripslashes(Sendgrid_Tools::get_template());
     $port = Sendgrid_Tools::get_port();
     $content_type = Sendgrid_Tools::get_content_type();
     $unsubscribe_group_id = Sendgrid_Tools::get_unsubscribe_group();
     $stats_categories = stripslashes(Sendgrid_Tools::get_stats_categories());
     $mc_api_key = Sendgrid_Tools::get_mc_api_key();
     $mc_list_id = Sendgrid_Tools::get_mc_list_id();
     $mc_opt_use_transactional = Sendgrid_Tools::get_mc_opt_use_transactional();
     $mc_opt_incl_fname_lname = Sendgrid_Tools::get_mc_opt_incl_fname_lname();
     $mc_opt_req_fname_lname = Sendgrid_Tools::get_mc_opt_req_fname_lname();
     $mc_signup_confirmation_page = Sendgrid_Tools::get_mc_signup_confirmation_page();
     $mc_signup_email_subject = Sendgrid_Tools::get_mc_signup_email_subject();
     if (false == $mc_signup_email_subject) {
         $mc_signup_email_subject = self::DEFAULT_SIGNUP_EMAIL_SUBJECT . get_bloginfo('name');
     }
     $mc_signup_email_content = Sendgrid_Tools::get_mc_signup_email_content();
     if (false == $mc_signup_email_content) {
         $mc_signup_email_content = self::DEFAULT_SIGNUP_EMAIL_CONTENT . get_bloginfo('name') . '</p>';
     }
     $mc_signup_email_content = stripslashes($mc_signup_email_content);
     $mc_signup_email_content_text = Sendgrid_Tools::get_mc_signup_email_content_text();
     if (false == $mc_signup_email_content_text) {
         $mc_signup_email_content_text = self::DEFAULT_SIGNUP_EMAIL_CONTENT_TEXT . get_bloginfo('name');
     }
     $mc_signup_email_content_text = stripslashes($mc_signup_email_content_text);
     $confirmation_pages = get_pages(array('parent' => 0));
     $checked_use_transactional = '';
     if ('true' == $mc_opt_use_transactional) {
         $checked_use_transactional = 'checked';
     }
     $checked_incl_fname_lname = '';
     if ('true' == $mc_opt_incl_fname_lname) {
         $checked_incl_fname_lname = 'checked';
     }
     $checked_req_fname_lname = '';
     if ('true' == $mc_opt_req_fname_lname) {
         $checked_req_fname_lname = 'checked';
     }
     $contact_lists = Sendgrid_NLVX::get_all_lists();
     $contact_list_id_is_valid = false;
     if (false != $contact_lists) {
         foreach ($contact_lists as $key => $list) {
             if ($mc_list_id == $list['id']) {
                 $contact_list_id_is_valid = true;
                 break;
             }
         }
     }
     $allowed_send_methods = array('API');
     if (class_exists('Swift')) {
         $allowed_send_methods[] = 'SMTP';
     }
     $is_mc_api_key_valid = true;
     if ('true' == $mc_opt_use_transactional and 'apikey' == $auth_method and !empty($api_key)) {
         if (!Sendgrid_Tools::check_api_key_mc($api_key)) {
             $is_mc_api_key_valid = false;
         }
     } else {
         if ('true' != $mc_opt_use_transactional) {
             if (!Sendgrid_Tools::check_api_key_mc($mc_api_key)) {
                 $is_mc_api_key_valid = false;
             }
         }
     }
     if ($is_mc_api_key_valid) {
         Sendgrid_Tools::set_mc_auth_valid('true');
     } else {
         Sendgrid_Tools::set_mc_auth_valid('false');
     }
     if (!$error_from_update) {
         if (!in_array(strtoupper($send_method), $allowed_send_methods)) {
             $message = 'Invalid send method configured in the config file, available methods are: ' . join(", ", $allowed_send_methods);
             $status = 'error';
         }
         if ('apikey' == $auth_method and !empty($api_key)) {
             if (!Sendgrid_Tools::check_api_key($api_key, true)) {
                 $message = 'API Key is invalid or without permissions.';
                 $status = 'error';
             } elseif ('true' == $mc_opt_use_transactional and !$is_mc_api_key_valid) {
                 $message = 'The configured API Key for subscription widget is invalid, empty or without permissions.';
                 $status = 'error';
             } elseif ('error' != $status) {
                 $status = 'valid_auth';
             }
         } elseif ('credentials' == $auth_method and !empty($user) and !empty($password)) {
             if (!Sendgrid_Tools::check_username_password($user, $password, true)) {
                 $message = 'Username and password are invalid.';
                 $status = 'error';
             } elseif ('error' != $status) {
                 $status = 'valid_auth';
             }
         }
         if ($template and !Sendgrid_Tools::check_template($template)) {
             $message = 'Template not found.';
             $status = 'error';
         }
         if (!in_array($port, Sendgrid_Tools::$allowed_ports)) {
             $message = 'Invalid port configured in the config file, available ports are: ' . join(",", Sendgrid_Tools::$allowed_ports);
             $status = 'error';
         }
         if (!in_array($auth_method, Sendgrid_Tools::$allowed_auth_methods)) {
             $message = 'Invalid authentication method configured in the config file, available options are: ' . join(", ", Sendgrid_Tools::$allowed_auth_methods);
             $status = 'error';
         }
         if (defined('SENDGRID_CONTENT_TYPE')) {
             if (!in_array(SENDGRID_CONTENT_TYPE, Sendgrid_Tools::$allowed_content_type)) {
                 $message = 'Invalid content type, available content types are: "plaintext" or "html".';
                 $status = 'error';
             }
         }
         if (defined('SENDGRID_FROM_EMAIL')) {
             if (!Sendgrid_Tools::is_valid_email(SENDGRID_FROM_EMAIL)) {
                 $message = 'Sending email address is not valid in config file.';
                 $status = 'error';
             }
         }
         if (defined('SENDGRID_REPLY_TO')) {
             if (!Sendgrid_Tools::is_valid_email(SENDGRID_REPLY_TO)) {
                 $message = 'Reply email address is not valid in config file.';
                 $status = 'error';
             }
         }
     }
     // get unsubscribe groups
     $unsubscribe_groups = Sendgrid_Tools::get_all_unsubscribe_groups();
     $no_permission_on_unsubscribe_groups = false;
     if ('apikey' == $auth_method and 'true' != Sendgrid_Tools::get_asm_permission()) {
         $no_permission_on_unsubscribe_groups = true;
     }
     $is_env_auth_method = defined('SENDGRID_AUTH_METHOD');
     $is_env_send_method = defined('SENDGRID_SEND_METHOD');
     $is_env_username = defined('SENDGRID_USERNAME');
     $is_env_password = defined('SENDGRID_PASSWORD');
     $is_env_api_key = defined('SENDGRID_API_KEY');
     $is_env_port = defined('SENDGRID_PORT');
     $is_env_content_type = defined('SENDGRID_CONTENT_TYPE');
     $is_env_unsubscribe_group = defined('SENDGRID_UNSUBSCRIBE_GROUP');
     $is_env_mc_api_key = defined('SENDGRID_MC_API_KEY');
     $is_env_mc_list_id = defined('SENDGRID_MC_LIST_ID');
     $is_env_mc_opt_use_transactional = defined('SENDGRID_MC_OPT_USE_TRANSACTIONAL');
     $is_env_mc_opt_incl_fname_lname = defined('SENDGRID_MC_OPT_INCL_FNAME_LNAME');
     $is_env_mc_opt_req_fname_lname = defined('SENDGRID_MC_OPT_REQ_FNAME_LNAME');
     $is_env_mc_signup_email_subject = defined('SENDGRID_MC_SIGNUP_EMAIL_SUBJECT');
     $is_env_mc_signup_email_content = defined('SENDGRID_MC_SIGNUP_EMAIL_CONTENT');
     $is_env_mc_signup_email_content_text = defined('SENDGRID_MC_SIGNUP_EMAIL_CONTENT_TEXT');
     $is_env_mc_signup_confirmation_page = defined('SENDGRID_MC_SIGNUP_CONFIRMATION_PAGE');
     if ($response and $status != 'error') {
         $message = $response['message'];
         $status = $response['status'];
         if (array_key_exists('error_type', $response)) {
             $error_type = $response['error_type'];
         }
     }
     require_once dirname(__FILE__) . '/../view/sendgrid_settings.php';
 }
Exemple #3
0
/**
 * 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);
}
 /**
  * Display SendGrid settings page content
  */
 public static function show_settings_page()
 {
     $response = null;
     $error_from_update = false;
     if ('POST' == $_SERVER['REQUEST_METHOD']) {
         $response = self::do_post($_POST);
         if (isset($response['status']) and $response['status'] == 'error') {
             $error_from_update = true;
         }
     }
     $status = '';
     $message = '';
     $user = Sendgrid_Tools::get_username();
     $password = Sendgrid_Tools::get_password();
     $api_key = Sendgrid_Tools::get_api_key();
     $send_method = Sendgrid_Tools::get_send_method();
     $auth_method = Sendgrid_Tools::get_auth_method();
     $name = stripslashes(Sendgrid_Tools::get_from_name());
     $email = Sendgrid_Tools::get_from_email();
     $reply_to = Sendgrid_Tools::get_reply_to();
     $categories = stripslashes(Sendgrid_Tools::get_categories());
     $template = stripslashes(Sendgrid_Tools::get_template());
     $port = Sendgrid_Tools::get_port();
     $content_type = Sendgrid_Tools::get_content_type();
     $stats_categories = stripslashes(Sendgrid_Tools::get_stats_categories());
     $allowed_send_methods = array('API');
     if (class_exists('Swift')) {
         $allowed_send_methods[] = 'SMTP';
     }
     if (!$error_from_update) {
         if (!in_array(strtoupper($send_method), $allowed_send_methods)) {
             $message = 'Invalid send method configured in the config file, available methods are: ' . join(", ", $allowed_send_methods);
             $status = 'error';
         }
         if ('apikey' == $auth_method and !empty($api_key)) {
             if (!Sendgrid_Tools::check_api_key($api_key, true)) {
                 $message = 'API Key is invalid or without permissions.';
                 $status = 'error';
             } else {
                 $status = 'valid_auth';
             }
         } elseif ('credentials' == $auth_method and !empty($user) and !empty($password)) {
             if (!Sendgrid_Tools::check_username_password($user, $password, true)) {
                 $message = 'Username and password are invalid.';
                 $status = 'error';
             } else {
                 $status = 'valid_auth';
             }
         }
         if ($template and !Sendgrid_Tools::check_template($template)) {
             $message = 'Template not found.';
             $status = 'error';
         }
         if (!in_array($port, Sendgrid_Tools::$allowed_ports)) {
             $message = 'Invalid port configured in the config file, available ports are: ' . join(",", Sendgrid_Tools::$allowed_ports);
             $status = 'error';
         }
         if (!in_array($auth_method, Sendgrid_Tools::$allowed_auth_methods)) {
             $message = 'Invalid authentication method configured in the config file, available options are: ' . join(", ", Sendgrid_Tools::$allowed_auth_methods);
             $status = 'error';
         }
         if (defined('SENDGRID_CONTENT_TYPE')) {
             if (!in_array(SENDGRID_CONTENT_TYPE, Sendgrid_Tools::$allowed_content_type)) {
                 $message = 'Invalid content type, available content types are: "plaintext" or "html".';
                 $status = 'error';
             }
         }
         if (defined('SENDGRID_FROM_EMAIL')) {
             if (!Sendgrid_Tools::is_valid_email(SENDGRID_FROM_EMAIL)) {
                 $message = 'Sending email address is not valid in config file.';
                 $status = 'error';
             }
         }
         if (defined('SENDGRID_REPLY_TO')) {
             if (!Sendgrid_Tools::is_valid_email(SENDGRID_REPLY_TO)) {
                 $message = 'Reply email address is not valid in config file.';
                 $status = 'error';
             }
         }
     }
     $is_env_auth_method = defined('SENDGRID_AUTH_METHOD');
     $is_env_send_method = defined('SENDGRID_SEND_METHOD');
     $is_env_username = defined('SENDGRID_USERNAME');
     $is_env_password = defined('SENDGRID_PASSWORD');
     $is_env_api_key = defined('SENDGRID_API_KEY');
     $is_env_port = defined('SENDGRID_PORT');
     $is_env_content_type = defined('SENDGRID_CONTENT_TYPE');
     if ($response && $status != 'error') {
         $message = $response['message'];
         $status = $response['status'];
         if (array_key_exists('error_type', $response)) {
             $error_type = $response['error_type'];
         }
     }
     require_once dirname(__FILE__) . '/../view/sendgrid_settings.php';
 }