phpgroupware-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Phpgroupware-cvs] phpgwapi/inc class.send.inc.php


From: Sigurd Nes
Subject: [Phpgroupware-cvs] phpgwapi/inc class.send.inc.php
Date: Fri, 16 Mar 2007 09:15:55 +0000

CVSROOT:        /sources/phpgwapi
Module name:    phpgwapi
Changes by:     Sigurd Nes <sigurdne>   07/03/16 09:15:55

Modified files:
        inc            : class.send.inc.php 

Log message:
        Make this class do something

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/phpgwapi/inc/class.send.inc.php?cvsroot=phpgwapi&r1=1.21&r2=1.22

Patches:
Index: class.send.inc.php
===================================================================
RCS file: /sources/phpgwapi/phpgwapi/inc/class.send.inc.php,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -b -r1.21 -r1.22
--- class.send.inc.php  29 Oct 2006 10:46:35 -0000      1.21
+++ class.send.inc.php  16 Mar 2007 09:15:55 -0000      1.22
@@ -8,7 +8,7 @@
        * @license http://www.fsf.org/licenses/lgpl.html GNU Lesser General 
Public License
        * @package phpgwapi
        * @subpackage communication
-       * @version $Id: class.send.inc.php,v 1.21 2006/10/29 10:46:35 sigurdne 
Exp $
+       * @version $Id: class.send.inc.php,v 1.22 2007/03/16 09:15:55 sigurdne 
Exp $
        */
 
        /**
@@ -25,6 +25,7 @@
        {
                var $err    = array('code','msg','desc');
                var $to_res = array();
+               var $errorInfo;
 
                function send()
                {
@@ -33,7 +34,7 @@
                        $this->err['desc'] = ' ';
                }
 
-               function msg($service, $to, $subject, $body, $msgtype='', 
$cc='', $bcc='', $from='', $sender='', $content_type='', 
$boundary='Message-Boundary')
+               function msg($service, $to, $subject, $body, $msgtype='', 
$cc='', $bcc='', $from='', $sender='', $content_type='', 
$boundary='Message-Boundary',$attachments='')
                {
                        if ($from == '')
                        {
@@ -47,132 +48,150 @@
                        switch( $service )
                        {
                                case 'email':
-                                       $this->send_email($to, $subject, $body, 
$msgtype, $cc, $bcc, $from, $sender, $content_type, 
$boundary='Message-Boundary');
+                                       return $this->send_email($to, $subject, 
$body, $msgtype, $cc, $bcc, $from, $sender, $content_type, 
$boundary='Message-Boundary',$attachments);
                                        break;
                        }
                }
 
-               function send_email($to, $subject, $body, $msgtype, $cc, $bcc, 
$from, $sender, $content_type, $ignored)
+               function send_email($to, $subject, $body, $msgtype, $cc, $bcc, 
$from, $sender, $content_type, $ignored,$attachments)
                {
                        $smtp = createObject('phpgwapi.mailer_smtp');
                        $from_array = split('<', $from);
                        unset($from);
                        if ( count($from_array) == 2 )
                        {
-                               $smtp->From = $from_array[1];
-                               $stmp->FromName = $from_array[0];
+                               $smtp->From = trim($from_array[1],'>');
+                               $smtp->FromName = $from_array[0];
                        }
                        else
                        {
                                $smtp->From = $from_array[0];
                        }
 
-                       $to_array = split('<', $to);
-                       unset($to);
+                       if(strpos($to,','))
+                       {
+                               $delimiter = ',';
+                       }
+                       else
+                       {
+                               $delimiter = ';';
+                       }
+                       $to = explode($delimiter, $to);
+                       
+                       foreach ($to as $entry)
+                       {
+                               $to_array = split('<', $entry);
                        if ( count($to_array) == 2 )
                        {
-                               $smtp->AddAddress($to_array[1], $to_array[0]);
+                                       
$smtp->AddAddress(trim($to_array[1],'>'), $to_array[0]);
                        }
                        else
                        {
                                $smtp->AddAddress($to_array[0]);
                        }
-
-                       $smtp->subject = $subject;
                }
                
-                       /*
-                               $now = getdate();
-                               $header  = 'Date: '.gmdate('D, d M Y H:i:s').' 
+0000'."\n";
-                               $header .= 'From: '.$from."\n";
-                               if($from != $sender)
+                       if($cc)
+                       {
+                               if(strpos($cc,','))
                                {
-                                       $header .= 'Sender: '.$sender."\n";
+                                       $delimiter = ',';
                                }
-                               $header .= 'Reply-To: 
'.$GLOBALS['phpgw_info']['user']['preferences']['email']['address']."\n";
-                               $header .= 'To: '.$to."\n";
-                               if (!empty($cc))
+                               else
                                {
-                                       $header .= 'Cc: '.$cc."\n";
+                                       $delimiter = ';';
                                }
-                               if (!empty($bcc))
+                               $cc = explode($delimiter, $cc);
+                       
+                               foreach ($cc as $entry)
                                {
-                                       $header .= 'Bcc: '.$bcc."\n";
+                                       $cc_array = split('<', $entry);
+                                       if ( count($cc_array) == 2 )
+                                       {
+                                               
$smtp->AddCC(trim($cc_array[1],'>'), $cc_array[0]);
                                }
-                               if (!empty($msgtype))
+                                       else
                                {
-                                       $header .= 'X-phpGW-Type: 
'.$msgtype."\n";
+                                               $smtp->AddCC($cc_array[0]);
                                }
-                               $header .= 'X-Mailer: phpGroupWare 
(http://www.phpgroupware.org)'."\n";
-
-                               if (empty($content_type))
+                               }
+                       }
+                       if($bcc)
+                       {
+                               if(strpos($bcc,','))
                                {
-                                       $content_type ='plain';
+                                       $delimiter = ',';
                                }
-
-                               if (ereg($boundary, $body)) 
+                               else
                                {
-                                       $header .= 'Subject: ' . 
stripslashes($subject) . "\n"
-                                               . 'MIME-Version: 1.0'."\n"
-                                               . 'Content-Type: 
multipart/mixed;'."\n"
-                                               . " boundary=\"$boundary\"\n\n"
-                                               . "--$boundary\n"
-                                               . 'Content-type: text/' 
.$content_type . '; charset="'.lang('charset').'"'."\n";
-//                                     if (!empty($msgtype))
-//                                     {
-//                                             $header .= "Content-type: 
text/' .$content_type . '; phpgw-type=".$msgtype."\n";
-//                                     }
+                                       $delimiter = ';';
+                               }
+                               $bcc = explode($delimiter, $bcc);
 
-                                       $header .= 'Content-Disposition: 
inline'."\n"
-                                               . 'Content-transfer-encoding: 
7BIT'."\n\n"
-                                               . $body;
-                                       $body = "";
+                               foreach ($bcc as $entry)
+                               {
+                                       $bcc_array = split('<', $entry);
+                                       if ( count($bcc_array) == 2 )
+                                       {
+                                               
$smtp->AddBCC(trim($bcc_array[1],'>'), $bcc_array[0]);
                                }
                                else
                                {
-                                       $header .= 'Subject: 
'.stripslashes($subject)."\n"
-                                               . 'MIME-version: 1.0'."\n"
-                                               . 'Content-type: text/' 
.$content_type . '; charset="'.lang('charset').'"'."\n";
-                                       if (!empty($msgtype))
-                                       {
-                                               $header .= 'Content-type: 
text/' .$content_type . '; phpgw-type='.$msgtype."\n";
+                                               $smtp->AddBCC($bcc_array[0]);
                                        }
-                                       $header .= 'Content-Disposition: 
inline'."\n"
-                                               . 'Content-description: Mail 
message body'."\n";
                                }
-                               if 
($GLOBALS['phpgw_info']['user']['preferences']['email']['mail_server_type'] == 
'imap' && $GLOBALS['phpgw_info']['user']['apps']['email'] &&
-                                       
$GLOBALS['phpgw_info']['user']['preferences']['email']['use_sent_folder'])
-                               {
-                                       if(!is_object($GLOBALS['phpgw']->msg))
-                                       {
-                                               $GLOBALS['phpgw']->msg = 
createObject('email.mail_msg');
                                        }
-                                       $args_array = Array();
-                                       $args_array['do_login'] = True;
-                                       $args_array['folder'] = 
$GLOBALS['phpgw_info']['user']['preferences']['email']['sent_folder_name'];
-                                       
$GLOBALS['phpgw']->msg->begin_request($args_array);
-                                       
$GLOBALS['phpgw']->msg->phpgw_append('Sent', $header."\n".$body, "\\Seen");
-                                       $GLOBALS['phpgw']->msg->end_request();
+                       $smtp->IsSMTP();
+                       $smtp->Subject = $subject;
+                       $smtp->Body    = $body;
+                       $smtp->AddCustomHeader('X-Mailer: phpGroupWare 
(http://www.phpgroupware.org)');
+                       $smtp->Port = 
$GLOBALS['phpgw_info']['server']['smtp_port'] ? 
$GLOBALS['phpgw_info']['server']['smtp_port'] : 25;
+                       $smtp->Host     = 
$GLOBALS['phpgw_info']['server']['smtp_server'];
+                       $smtp->Encoding = '8bit';
+                       $smtp->CharSet = 'utf-8';
+                       $smtp->PluginDir = 
PHPGW_SERVER_ROOT."/phpgwapi/inc/phpmailer/";
+
+                       if($content_type =='html')
+                       {
+                               $smtp->IsHTML(true);
                                }
-                               if (strlen($cc)>1)
+                       else
                                {
-                                       $to .= ','.$cc;
+                               $smtp->IsHTML(false);
+                               $smtp->WordWrap = 76;
                                }
 
-                               if (strlen($bcc)>1)
+                       if (isset($attachments) && is_array($attachments))
                                {
-                                       $to .= ','.$bcc;
+                               while(list($key,$value) = each($attachments))
+                               {
+                                       $smtp->AddAttachment
+                                       (
+                                               $value['file'],
+                                               utf8_decode($value['name']),
+                                               'base64',
+                                               $value['type']
+                                       );
+                               }
                                }
-                               $returnccode = $this->smail($to, '', $body, 
$header);
 
-                               return $returnccode;
+                       if($GLOBALS['phpgw_info']['server']['smtpAuth'] == 
'yes')
+                       {
+                               $smtp->SMTPAuth = true;
+                               $smtp->Username = 
$GLOBALS['phpgw_info']['server']['smtpUser'];
+                               $smtp->Password = 
$GLOBALS['phpgw_info']['server']['smtpPassword'];
                        }
-                       elseif ($type == 'nntp')
+
+                       // set a higher timeout for big messages
+                       @set_time_limit(120);
+                       #$smtp->SMTPDebug = 10;
+                       if(!$smtp->Send())
                        {
-                               // nothing is here?
+                               $this->errorInfo = $smtp->ErrorInfo;
+                               return false;
                        }
+                       return true;
                }
-               */
 
                // ==================================================[ some 
sub-functions ]===
 
@@ -221,7 +240,7 @@
 
                                if ($enc_start == $w+1) // first word to encode
                                {
-                                       $str .= '=?'.lang('charset').'?Q?';
+                                       $str .= '=?iso-8859-1?Q?';
                                }
                                $str .= $w+1 > $enc_end ? 
str_replace('=3D','=',$s) : $s;
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]