yf_mail_driver_sendgrid class

Fileplugins/email/classes/mail/yf_mail_driver_sendgrid.class.php
Use_class('mail_driver_sendgrid', 'classes/mail/')
Extendsyf_mail_driver

Public properties

A site sets them in its config with $PROJECT_CONF['mail_driver_sendgrid']['NAME'] = ...;

PropertyDefaultDescription
$PARENT null
$key
string
null The SendGrid API key.

Public methods 3

send

public function send(array $params = [], &$error_message = '')

https://github.com/sendgrid/sendgrid-php/blob/master/examples/helpers/mail/example.php.

  • $params array
    public function send(array $params = [], &$error_message = '')
    {
        $result = null;
        require_php_lib('sendgrid');

        $error_message = null;
        $mail = null;
        $response = null;
        try {
            $sg = new \SendGrid($this->key);

            $from = new SendGrid\Email($params['name_from'], $params['email_from']);
            $subject = $params['subject'];
            $to = new SendGrid\Email($params['name_to'], $params['email_to']);
            $text_content = new SendGrid\Content('text/plain', $params['text']);
            $mail = new SendGrid\Mail($from, $subject, $to, $text_content);

            $html_content = new SendGrid\Content('text/html', $params['html']);
            $mail->addContent($html_content);

            if ($params['reply_to']) {
                $reply_to = new SendGrid\ReplyTo($params['reply_to']);
                $mail->setReplyTo($reply_to);
            }
            if ($this->PARENT->ALLOW_ATTACHMENTS) {
                foreach ((array) $params['attaches'] as $name => $file) {
                    $attachment = new SendGrid\Attachment();
                    $attachment->setContent(file_get_contents($file));
                    $attachment->setFilename($name);
                    $mail->addAttachment($attachment);
                }
            }
            $response = $sg->client->mail()->send()->post($mail);
        } catch (Exception $e) {
            $error_message = 'A sendgrid error occurred: ' . get_class($e) . ' - ' . $e->getMessage();
        }
        if (($error_message ?? null) && DEBUG_MODE && $this->PARENT->MAIL_DEBUG_ERROR) {
            trigger_error($error_message, E_USER_WARNING);
        }
        if (is_callable($params['on_after_send'])) {
            $callback = $params['on_after_send'];
            $callback($mail, $params, $result, $error_message, $this->PARENT);
        }
        $this->PARENT->_last_error_message = $error_message;
        return $response && ! $error_message ? true : false;
    }

Methods starting with _ hooks and helpers; not routable as page actions

__call

public function __call($name, $args)

Catch missing method call.

    public function __call($name, $args)
    {
        return main()->extend_call($this, $name, $args);
    }

_init

public function _init()
    public function _init()
    {
        $this->PARENT = _class('send_mail');
    }