forked from extern/egroupware
fixed typo that wasn't allowing phpmailer to authenticate to smtp server when needed
This commit is contained in:
parent
cff2ee4a4b
commit
7ebc061ac0
171
phpgwapi/inc/class.send.inc.php
Normal file
171
phpgwapi/inc/class.send.inc.php
Normal file
@ -0,0 +1,171 @@
|
||||
<?php
|
||||
/**************************************************************************\
|
||||
* eGroupWare API - smtp mailer using PHPMailer *
|
||||
* This file written by RalfBecker@outdoor-training.de *
|
||||
* ------------------------------------------------------------------------ *
|
||||
* This library is free software; you can redistribute it and/or modify it *
|
||||
* under the terms of the GNU Lesser General Public License as published by *
|
||||
* the Free Software Foundation; either version 2.1 of the License, *
|
||||
* or any later version. *
|
||||
* This library is distributed in the hope that it will be useful, but *
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||
* See the GNU Lesser General Public License for more details. *
|
||||
* You should have received a copy of the GNU Lesser General Public License *
|
||||
* along with this library; if not, write to the Free Software Foundation, *
|
||||
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
|
||||
\**************************************************************************/
|
||||
|
||||
/* $Id$ */
|
||||
|
||||
require_once(PHPGW_API_INC.'/class.phpmailer.inc.php');
|
||||
|
||||
/**
|
||||
* New eGW send-class. It implements the old interface (msg-method) on top of PHPMailer.
|
||||
*
|
||||
* The configuration is read from Admin >> Site configuration and it does NOT depend on one of the email-apps anymore.
|
||||
*
|
||||
* @author RalfBecker@outdoor-training.de
|
||||
*/
|
||||
class send extends PHPMailer
|
||||
{
|
||||
var $err = array();
|
||||
var $to_res = array();
|
||||
|
||||
/**
|
||||
* eGW specific initialisation of the PHPMailer: charset, language, smtp-host, ...
|
||||
*
|
||||
* To be able to call PHPMailer's Send function, we check if a subject, body or address is set and call it in that case,
|
||||
* else we do our constructors work.
|
||||
*/
|
||||
function send()
|
||||
{
|
||||
if ($this->Subject || $this->Body || count($this->to))
|
||||
{
|
||||
return PHPMailer::Send();
|
||||
}
|
||||
$this->CharSet = $GLOBALS['phpgw']->translation->charset();
|
||||
list($lang,$nation) = explode('-',$GLOBALS['phpgw_info']['user']['preferences']['common']['lang']);
|
||||
$lang_path = PHPGW_SERVER_ROOT.'/phpgwapi/setup/';
|
||||
if ($nation && file_exists($lang_path."phpmailer.lang-$nation.php")) // atm. only for pt-br => br
|
||||
{
|
||||
$lang = $nation;
|
||||
}
|
||||
$this->SetLanguage($lang,$lang_path);
|
||||
|
||||
$this->IsSmtp();
|
||||
$this->Host = $GLOBALS['phpgw_info']['server']['smtp_server']?$GLOBALS['phpgw_info']['server']['smtp_server']:'localhost';
|
||||
$this->Port = $GLOBALS['phpgw_info']['server']['smtp_port']?$GLOBALS['phpgw_info']['server']['smtp_port']:25;
|
||||
$this->SMTPAuth = !empty($GLOBALS['phpgw_info']['server']['smtp_auth_user']);
|
||||
$this->Username = $GLOBALS['phpgw_info']['server']['smtp_auth_user'];
|
||||
$this->Password = $GLOBALS['phpgw_info']['server']['smtp_auth_passwd'];
|
||||
|
||||
$this->Hostname = $GLOBALS['phpgw_info']['server']['hostname'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset all Settings to send multiple Messages
|
||||
*/
|
||||
function ClearAll()
|
||||
{
|
||||
$this->err = array();
|
||||
|
||||
$this->Subject = $this->Body = $this->AltBody = '';
|
||||
$this->IsHTML(False);
|
||||
$this->ClearAllRecipients();
|
||||
$this->ClearAttachments();
|
||||
$this->ClearCustomHeaders();
|
||||
|
||||
$this->FromName = $GLOBALS['phpgw_info']['user']['fullname'];
|
||||
$this->From = $GLOBALS['phpgw_info']['user']['email'];
|
||||
$this->Sender = '';
|
||||
|
||||
$this->AddCustomHeader('X-Mailer:eGroupWare (http://www.eGroupWare.org)');
|
||||
}
|
||||
|
||||
/**
|
||||
* Emulating the old send::msg interface for compatibility with existing code
|
||||
*
|
||||
* You can either use that code or the PHPMailer variables and methods direct.
|
||||
*/
|
||||
function msg($service, $to, $subject, $body, $msgtype='', $cc='', $bcc='', $from='', $sender='', $content_type='', $boundary='Message-Boundary')
|
||||
{
|
||||
//echo "<p>send::msg(,to='$to',subject='$subject',,'$msgtype',cc='$cc',bcc='$bcc',from='$from',sender='$sender','$content_type','$boundary')<pre>$body</pre>\n";
|
||||
$this->ClearAll(); // reset everything to its default, we might be called more then once !!!
|
||||
|
||||
if ($service != 'email')
|
||||
{
|
||||
return False;
|
||||
}
|
||||
if ($from)
|
||||
{
|
||||
if (preg_match('/"?(.+)"?<(.+)>/',$from,$matches))
|
||||
{
|
||||
list(,$this->FromName,$this->From) = $matches;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->From = $from;
|
||||
$this->FromName = '';
|
||||
}
|
||||
}
|
||||
if ($sender)
|
||||
{
|
||||
$this->Sender = $sender;
|
||||
}
|
||||
foreach(array('to','cc','bcc') as $adr)
|
||||
{
|
||||
if ($$adr)
|
||||
{
|
||||
if (preg_match_all('/"?(.+)"?<(.+)>,?/',$$adr,$matches))
|
||||
{
|
||||
$names = $matches[1];
|
||||
$addresses = $matches[2];
|
||||
}
|
||||
else
|
||||
{
|
||||
$addresses = split('[, ]',$$adr);
|
||||
$names = array();
|
||||
}
|
||||
$method = 'Add'.($adr == 'to' ? 'Address' : $adr);
|
||||
|
||||
foreach($addresses as $n => $address)
|
||||
{
|
||||
$this->$method($address,$names[$n]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!empty($msgtype))
|
||||
{
|
||||
$this->AddCustomHeader('X-eGW-Type: '.$msgtype);
|
||||
}
|
||||
if ($content_type)
|
||||
{
|
||||
$this->ContentType = $content_type;
|
||||
}
|
||||
$this->Subject = $subject;
|
||||
$this->Body = $body;
|
||||
|
||||
//echo "PHPMailer = <pre>".print_r($this,True)."</pre>\n";
|
||||
if (!$this->Send())
|
||||
{
|
||||
$this->err = array(
|
||||
'code' => 1, // we dont get a numerical code from PHPMailer
|
||||
'msg' => $this->ErrorInfo,
|
||||
'desc' => $this->ErrorInfo,
|
||||
);
|
||||
return False;
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
/**
|
||||
* encode 8-bit chars in subject-line
|
||||
*
|
||||
* This is not needed any more, as it is done be PHPMailer, but older code depend on it.
|
||||
*/
|
||||
function encode_subject($subject)
|
||||
{
|
||||
return $subject;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user