소스 검색

Merge pull request #84 from jiripetrek/feature-mail-handler

Add posibility to specify more address and custom headers in NativeMailerHandler
Jordi Boggiano 13 년 전
부모
커밋
2eb0c0978d
1개의 변경된 파일22개의 추가작업 그리고 6개의 파일을 삭제
  1. 22 6
      src/Monolog/Handler/NativeMailerHandler.php

+ 22 - 6
src/Monolog/Handler/NativeMailerHandler.php

@@ -22,21 +22,35 @@ class NativeMailerHandler extends MailHandler
 {
     protected $to;
     protected $subject;
-    protected $headers;
+    protected $headers = array(
+        'Content-type: text/plain; charset=utf-8'
+    );
 
     /**
-     * @param string $to The receiver of the mail
+     * @param string|array $to The receiver of the mail
      * @param string $subject The subject of the mail
      * @param string $from The sender of the mail
      * @param integer $level The minimum logging level at which this handler will be triggered
-     * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+     * @param boolean $bubble Whether the messages that are handled can bubble up the stack or not
      */
     public function __construct($to, $subject, $from, $level = Logger::ERROR, $bubble = true)
     {
         parent::__construct($level, $bubble);
-        $this->to = $to;
+        $this->to = is_array($to) ? $to : array($to);
         $this->subject = $subject;
-        $this->headers = sprintf("From: %s\r\nContent-type: text/plain; charset=utf-8\r\n", $from);
+        $this->headers[] = sprintf('From: %s', $from);
+    }
+
+    /**
+     * @param string|array $header Custom added headers
+     */
+    public function addHeader($headers)
+    {
+        if (is_array($headers)) {
+            $this->headers = array_merge($this->headers, $headers);
+        } else {
+            $this->headers[] = $headers;
+        }
     }
 
     /**
@@ -44,6 +58,8 @@ class NativeMailerHandler extends MailHandler
      */
     protected function send($content, array $records)
     {
-        mail($this->to, $this->subject, wordwrap($content, 70), $this->headers);
+        foreach ($this->to as $to) {
+            mail($to, $this->subject, wordwrap($content, 70), implode("\r\n", $this->headers) . "\r\n");
+        }
     }
 }