/** * https://github.com/sendgrid/sendgrid-php/blob/master/examples/helpers/mail/example.php */ function send(array $params = [], &$error_message = '') { require_php_lib('sendgrid'); $error_message = 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 && 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; }
function _cdashsendgrid($to, $subject, $body) { global $CDASH_EMAIL_FROM, $CDASH_EMAIL_REPLY, $CDASH_SENDGRID_API_KEY; $sg = new \SendGrid($CDASH_SENDGRID_API_KEY); $mail = new SendGrid\Mail(); $mail->setFrom(new SendGrid\Email(null, $CDASH_EMAIL_FROM)); $mail->setSubject($subject); $mail->setReplyTo(new SendGrid\Email(null, $CDASH_EMAIL_REPLY)); $mail->addContent(new SendGrid\Content('text/plain', $body)); foreach (explode(', ', $to) as $recipient) { $personalization = new SendGrid\Personalization(); $personalization->addTo(new SendGrid\Email(null, $recipient)); $mail->addPersonalization($personalization); } $response = $sg->client->mail()->send()->post($mail); if ($response->statusCode() === 202) { return true; } else { add_log('Failed to send email via sendgrid status code: ' . $response->statusCode(), '_cdashsendgrid', LOG_ERR); return false; } }