source: trunk/services/class.mail.php @ 5130

Revision 5130, 6.7 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus, do modulo services.

  • Property svn:executable set to *
Line 
1<?php
2/**
3*
4* Copyright (C) 2011 Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)
5*
6*  This program is free software; you can redistribute it and/or
7*  modify it under the terms of the GNU General Public License
8*  as published by the Free Software Foundation; either version 2
9*  of the License, or (at your option) any later version.
10
11*  This program is distributed in the hope that it will be useful,
12*  but WITHOUT ANY WARRANTY; without even the implied warranty of
13*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14*  GNU General Public License for more details.
15
16*  You should have received a copy of the GNU General Public License
17*  along with this program; if not, write to the Free Software
18*  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19*
20* You can contact Prognus Software Livre headquarters at Av. Tancredo Neves,
21*  6731, PTI, Bl. 05, Esp. 02, Sl. 10, Foz do Iguaçu - PR - Brasil or at
22* e-mail address prognus@prognus.com.br.
23*
24*
25* @package    MailService
26* @license    http://www.gnu.org/copyleft/gpl.html GPL
27* @author     Consórcio Expresso Livre - 4Linux (www.4linux.com.br) e Prognus Software Livre (www.prognus.com.br)
28* @sponsor    Caixa EconÃŽmica Federal
29* @version    1.0
30* @since      2.4.0
31*/
32
33require_once ( $_SESSION['rootPath'].'/library/mime/mimePart.php' );
34require_once ( $_SESSION['rootPath'].'/library/mime/mime.php' );
35
36
37class MailService
38{
39    static $configuration = array( 'host' => '', 'port' => '', 'username' => '', 'password' => '' , 'auth' => '');
40    protected $mail;
41    protected $smtpConfig;
42    protected $arrayFields = array();
43   
44        public function __construct( $config = null)
45    {
46       $this->mail = new Mail_mime();
47       
48                if( !$config )
49                {
50                        require_once ( ROOT.'/header.inc.php' );
51       
52                        $boemailadmin = CreateObject('emailadmin.bo');
53                        $emailadmin = $boemailadmin->getProfileList();
54                        $emailadmin = $boemailadmin->getProfile($emailadmin[0]['profileID']);
55                       
56                        self::$configuration['host'] = $emailadmin['smtpServer'];
57                        self::$configuration['port'] = $emailadmin['smtpPort'];
58            self::$configuration['auth'] = $emailadmin['smtpAuth'] ? true : false;
59            self::$configuration['username'] = $emailadmin['imapAdminUsername'];
60            self::$configuration['password'] = $emailadmin['imapAdminPW'];
61                }
62                else
63                        $this->configure( $config );
64
65    }
66   
67    public function sendMail( $to, $from, $subject, $body, $bcc = false, $cc = false, $isHTML = true )
68    {
69       
70                if( $body )
71                {
72            if( $isHTML ) $this->mail->setHTMLBody( $body );
73            else $this->mail->setTXTBody( $body );
74                }
75       
76        if( $subject ) $this->mail->setSubject ( $subject );
77               
78        if( !$from ) $from = $GLOBALS['phpgw']->preferences->values['email'];
79       
80        $this->mail->setFrom( $from );
81       
82        $this->mail->addTo($to);
83       
84        if( $bcc ) $this->mail->addBcc ($bbc);
85               
86        if( $cc ) $this->mail->addCc ($cc);
87       
88        $hdrs = $this->mail->headers($this->arrayFields);
89               
90        require_once ($_SESSION['rootPath'].'/library/Mail/Mail.php');
91       
92        $mail_object =& Mail::factory("smtp", self::$configuration);
93       
94        $recipients = '';
95               
96                if( $hdrs["To"] )
97                        $recipients .= $hdrs["To"];
98                if( $hdrs["Cc"] && $recipients)
99                        $recipients .= ', '.$hdrs["Cc"];
100                if($hdrs["Cc"] && !$recipients)
101                        $recipients = $hdrs["Cc"];
102       
103        if($hdrs["Bcc"])
104            $arrayBcc = explode(',',$hdrs["Bcc"]);
105       
106        if($recipients)
107                $sent = $mail_object->send($recipients, $hdrs , $this->mail->getMessageBody());
108               
109        if(isset($arrayBcc)){
110                foreach ($arrayBcc as $bcc)
111                        if($bcc)
112                                $sent = $mail_object->send($bcc, $hdrs , $this->mail->getMessageBody());
113    }
114        if($sent !== true)
115                return $sent->message;
116
117                return true;
118    }
119   
120        public function configure( $config )
121    {
122                if( !$config ) return( false );
123       
124                foreach( $config as $key => $value )
125                        if( $value && isset( self::$configuration[$key] ) )
126                        self::$configuration[$key] = $value;
127                        }
128   
129    public function send()
130    {
131        require_once ($_SESSION['rootPath'].'/library/Mail/Mail.php');
132        $hdrs = $this->mail->headers($this->arrayFields);
133        $mail_object =& Mail::factory("smtp", self::$configuration);
134       
135        $recipients = '';
136               
137                if( $hdrs["To"] )
138                        $recipients .= $hdrs["To"];
139                if( $hdrs["Cc"] && $recipients)
140                        $recipients .= ', '.$hdrs["Cc"];
141                if($hdrs["Cc"] && !$recipients)
142                        $recipients = $hdrs["Cc"];
143       
144        if($hdrs["Bcc"])
145            $arrayBcc = explode(',',$hdrs["Bcc"]);
146       
147        if($recipients)
148                $sent = $mail_object->send($recipients, $hdrs , $this->mail->getMessageBody());
149               
150        if(isset($arrayBcc)){
151                foreach ($arrayBcc as $bcc)
152                        if($bcc)
153                                $sent = $mail_object->send($bcc, $hdrs , $this->mail->getMessageBody());
154        }
155        if($sent !== true)
156                return $sent->message;
157       
158                return true;
159    }
160
161    public function  addStringAttachment($file, $filename, $type, $encoding = 'base64', $disposition = 'attachment')
162    {           
163                $this->mail->addAttachment($file, $type, $filename, false, $encoding, $disposition , $charset = '' ,  $language = '' ,  $location = '' ,  $n_encoding = 'base64');
164    }
165   
166    public function  addFileAttachment($file, $filename, $type, $encoding = 'base64', $disposition = 'attachment')
167    {     
168        $this->mail->addAttachment($file, $type, $filename, true, $encoding, $disposition, $charset = '' ,  $language = '' ,  $location = '' ,  $n_encoding = 'base64');
169    }
170   
171    public function addFileImage($file, $c_type='application/octet-stream', $name = '',  $content_id = null)
172    {
173          $this->mail->addHTMLImage($file, $c_type, $name, true, $content_id );
174                }
175   
176    public function  addStringImage($file, $c_type='application/octet-stream', $name = '',  $content_id = null)
177    {       
178        $this->mail->addHTMLImage($file, $c_type, $name, false, $content_id );
179    }
180
181    public function  getMessage()
182    {
183         return $this->mail->getMessage(null,null,$this->arrayFields);
184    }
185
186    public function addTo($email)
187    {
188        $this->mail->addTo($email);
189    }
190
191    public function addCc($email)
192    {
193        $this->mail->addCc($email);
194    }
195
196    public function addBcc($email)
197    {
198       $this->mail->addBcc($email);
199    }
200
201    public function setSubject($subject)
202       {
203       $this->mail->setSubject($subject);
204        }
205       
206    public function setFrom($email)
207        {
208        $this->mail->setFrom($email);
209        }
210
211    public function setBodyText($data)
212    {
213        $this->mail->setTXTBody($data);
214    }
215
216    public function setBodyHtml($data)
217    {
218        $this->mail->setHTMLBody($data);
219    }
220   
221    public function getBodyHtml()
222    {
223        return $this->mail->getHTMLBody();
224    }
225         
226    public function addHeaderField($field,$value)
227    {
228        $this->arrayFields[$field] = $value;
229    }
230   
231}
232
233ServiceLocator::register( 'mail', new MailService() );
234
Note: See TracBrowser for help on using the repository browser.