add handling for mails that have no valid recipient when we try to send them
[php-utility-classes.git] / include / classes / email.php-class
index bf7273c4d44e57b36aa0acac4870b381a7afab2d..c7e1ee4f657e3d95fef5d852bde131b84267f09f 100755 (executable)
@@ -182,11 +182,16 @@ class email {
     if (count($this->recipients)) {
       $recpt = '';
       foreach ($this->recipients as $address) {
-        if (strlen($address['name'])) { $recpt .= $this->mimeencode($address['name'], true).' <'.$address['mail'].'>,'; }
-        else { $recpt .= $address['mail'].','; }
+        if (strlen(@$address['mail'])) {
+          if (strlen($address['name'])) { $recpt .= $this->mimeencode($address['name'], true).' <'.$address['mail'].'>,'; }
+          else { $recpt .= $address['mail'].','; }
+        }
       }
       $recpt = preg_replace('/,$/', '', $recpt);
     }
+    if (!strlen($recpt)) {
+      return null;
+    }
     if (count($this->cc)) {
       $adrs = '';
       foreach ($this->cc as $address) {
@@ -247,12 +252,20 @@ class email {
       foreach ($this->attachments as $attach) {
         $mtxt .= "\n".'--'.$boundary."\n";
         $mtxt .= 'Content-Type: '.$attach['type'].'; name="'.$attach['name'].'";'."\n";
-        $mtxt .= 'Content-Transfer-Encoding: base64'."\n";
-        $mtxt .= 'Content-Disposition: attachment'."\n\n";
-        $mtxt .= rtrim(chunk_split(base64_encode($attach['content']), 76)); ;
-        $mtxt .= "\n";
+        if (preg_match('/^(text|message)\//', $attach['type'])) {
+          $mtxt .= 'Content-Transfer-Encoding: 8bit'."\n";
+          $mtxt .= 'Content-Disposition: attachment'."\n\n";
+          $mtxt .= $attach['content'];
+          $mtxt .= "\n";
+        }
+        else {
+          $mtxt .= 'Content-Transfer-Encoding: base64'."\n";
+          $mtxt .= 'Content-Disposition: attachment'."\n\n";
+          $mtxt .= rtrim(chunk_split(base64_encode($attach['content']), 76)); ;
+          $mtxt .= "\n";
+        }
       }
-      $mtext .= '--'.$boundary.'--'."\n";
+      $mtxt .= '--'.$boundary.'--'."\n";
     }
 
     if (strlen($this->debug_toSingleAddress)) {