Jelajahi Sumber

ADD support to SendGrid Handler

ADD support to SendGrid Handler
Ricardo Fontanelli 9 tahun lalu
induk
melakukan
a9e990ac5e
1 mengubah file dengan 95 tambahan dan 0 penghapusan
  1. 95 0
      src/Monolog/Handler/SendGridHandler.php

+ 95 - 0
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 SendGridrHandler 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);
+    }
+}