diff options
author | Jordi Boggiano <j.boggiano@seld.be> | 2016-05-26 20:12:25 +0100 |
---|---|---|
committer | Jordi Boggiano <j.boggiano@seld.be> | 2016-05-26 20:12:25 +0100 |
commit | a4f1c18339f739c79e79bf9c7598ab673b718b89 (patch) | |
tree | 850365c199b53e2feee7c80fce8c79d6aca4ac6c | |
parent | b9bf56a3307e89faf0f5ca71ff034ea41c80f8dd (diff) | |
parent | 3c7920b446cc0ffb353917b61d8202ece163355d (diff) | |
download | monolog-a4f1c18339f739c79e79bf9c7598ab673b718b89.zip monolog-a4f1c18339f739c79e79bf9c7598ab673b718b89.tar.gz monolog-a4f1c18339f739c79e79bf9c7598ab673b718b89.tar.bz2 |
Merge remote-tracking branch 'ricardofontanelli/master'
-rw-r--r-- | src/Monolog/Handler/SendGridHandler.php | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/src/Monolog/Handler/SendGridHandler.php b/src/Monolog/Handler/SendGridHandler.php new file mode 100644 index 0000000..01e70a3 --- /dev/null +++ b/src/Monolog/Handler/SendGridHandler.php @@ -0,0 +1,95 @@ +<?php + +/* + * This file is part of the Monolog package. + * + * (c) Jordi Boggiano <j.boggiano@seld.be> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Monolog\Handler; + +use Monolog\Logger; + +/** + * SendGridrHandler uses the SendGrid API v2 function to send Log emails, more information in https://sendgrid.com/docs/API_Reference/Web_API/mail.html + * + * @author Ricardo Fontanelli <ricardo.fontanelli@hotmail.com> + */ +class SendGridHandler extends MailHandler +{ + /** + * The SendGrid API User + * @var string + */ + protected $apiUser; + + /** + * The SendGrid API Key + * @var string + */ + protected $apiKey; + + /** + * The email addresses to which the message will be sent + * @var string + */ + protected $from; + + /** + * The email addresses to which the message will be sent + * @var array + */ + protected $to; + + /** + * The subject of the email + * @var string + */ + protected $subject; + + /** + * @param string $apiUser The SendGrid API User + * @param string $apiKey The SendGrid API Key + * @param string $from The sender of the email + * @param string|array $to The recipients of the email + * @param string $subject The subject of the mail + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + */ + public function __construct($apiUser, $apiKey, $from, $to, $subject, $level = Logger::ERROR, $bubble = true) + { + parent::__construct($level, $bubble); + $this->apiUser = $apiUser; + $this->apiKey = $apiKey; + $this->from = $from; + $this->to = is_array($to) ? $to : array($to); + $this->subject = $subject; + } + + /** + * {@inheritdoc} + */ + protected function send($content, array $records) + { + $message = array(); + $message['api_user'] = $this->apiUser; + $message['api_key'] = $this->apiKey; + $message['from'] = $this->from; + foreach ($this->to AS $v) { + $message['to[]'] = $v; + } + $message['subject'] = $this->subject; + $message['text'] = $content; + $message['date'] = date('r'); + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, 'https://api.sendgrid.com/api/mail.send.json'); + curl_setopt($ch, CURLOPT_POST, 1); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($message)); + Curl\Util::execute($ch, 2); + } +} |