looking for wrong seperator
[Pman.Core] / Mailer.php
index 86f392f..7da09a8 100644 (file)
@@ -86,6 +86,8 @@ class Pman_Core_Mailer {
       
     var $bcc = false;
     
+    var $body_cls = false;
+    
     function __construct($args) {
         foreach($args as $k=>$v) {
             // a bit trusting..
@@ -120,16 +122,12 @@ class Pman_Core_Mailer {
         
         $ff = HTML_FlexyFramework::get();
         $http_host = isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : 'pman.HTTP_HOST.not.set';
-        if (isset($ff->Pman['HTTP_HOST'])) {
+        if (isset($ff->Pman['HTTP_HOST']) && $http_host != 'localhost') {
             $http_host  = $ff->Pman['HTTP_HOST'];
         }
         
-        
         $content->HTTP_HOST = $http_host;
         
-        
-        
-        
         // this should be done by having multiple template sources...!!!
         
         require_once 'HTML/Template/Flexy.php';
@@ -172,6 +170,11 @@ class Pman_Core_Mailer {
             
             // for the html body, we may want to convert the attachments to images.
 //            var_dump($htmlbody);exit;
+            
+            if(!empty($content->body_cls) && strlen($content->body_cls)){
+                $htmlbody = $this->htmlbodySetClass($htmlbody, $content->body_cls);
+            }
+            
             if ($this->replaceImages) {
                 $htmlbody = $this->htmlbodytoCID($htmlbody);    
             }
@@ -370,7 +373,10 @@ class Pman_Core_Mailer {
                 'Subject: '  . @$email['headers']['Subject']
             ); 
         }  else {
-            $pg->addEvent("COREMAILER-FAIL",  false, $ret->toString());
+            $pg->addEvent("COREMAILER-FAIL",  false,
+                "Sending to : " . ( is_array($rcpts) ? implode(', ', $rcpts) : $rcpts ) .
+                " Error: " . $ret->toString());
+
         }
         
         return $ret;
@@ -383,6 +389,8 @@ class Pman_Core_Mailer {
         @$dom->loadHTML('<?xml encoding="UTF-8">' .$html);
         $imgs= $dom->getElementsByTagName('img');
         
+        $urls = array();
+        
         foreach ($imgs as $i=>$img) {
             $url  = $img->getAttribute('src');
             if (preg_match('#^cid:#', $url)) {
@@ -393,16 +401,19 @@ class Pman_Core_Mailer {
                 continue;
             }
             
-            $conv = $this->fetchImage($url);
-            $this->images[$conv['contentid']] = $conv;
-            
+            if(!array_key_exists($url, $urls)){
+                $conv = $this->fetchImage($url);
+                $urls[$url] = $conv;
+                $this->images[$conv['contentid']] = $conv;
+            } else {
+                $conv = $urls[$url];
+            }
+            $img->setAttribute('origsrc', $url);
             $img->setAttribute('src', 'cid:' . $conv['contentid']);
-            
-            
         }
-        return $dom->saveHTML();
         
         
+        return $dom->saveHTML();
         
     }
     function htmlbodyCssEmbed($html)
@@ -454,16 +465,14 @@ class Pman_Core_Mailer {
     }
     
     function htmlbodyInlineCss($html)
-    {
-        print_R($html);exit;
-        
+    {   
         $dom = new DOMDocument();
         
         @$dom->loadHTML('<?xml encoding="UTF-8">' .$html);
         
         $html = $dom->getElementsByTagName('html');
         $head = $dom->getElementsByTagName('head');
-        $body = $dom->getElementsByTagName('head');
+        $body = $dom->getElementsByTagName('body');
         
         if(!$head->length){
             $head = $dom->createElement('head');
@@ -476,6 +485,37 @@ class Pman_Core_Mailer {
         $s->appendChild($e);
         $head->item(0)->appendChild($s);
         
+        return $dom->saveHTML();
+        
+        /* Inline
+        require_once 'HTML/CSS/InlineStyle.php';
+        
+        $doc = new HTML_CSS_InlineStyle($html);
+        
+        $doc->applyStylesheet($this->css_inline);
+        
+        $html = $doc->getHTML();
+        
+        return $html;
+        */
+    }
+    
+    function htmlbodySetClass($html, $cls)
+    {
+        $dom = new DOMDocument();
+        
+        @$dom->loadHTML('<?xml encoding="UTF-8">' .$html);
+        
+        $body = $dom->getElementsByTagName('body');
+        if (!empty($body->length)) {
+            $body->item(0)->setAttribute('class', $cls);
+        } else {
+            $body = $dom->createElement("body");
+            $body->setAttribute('class', $cls);
+            $dom->appendChild($body);
+        }
+        
+        
         return $dom->saveHTML();
     }