forked from extern/egroupware
removing PHPMailer require, no more empty Bcc, and first version for send class using new egw_mailer
This commit is contained in:
parent
b967548cb5
commit
4b999cc43a
@ -10,8 +10,6 @@
|
|||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once(EGW_API_INC.'/class.phpmailer.inc.php');
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log mails to log file specified in $GLOBALS['egw_info']['server']['log_mail']
|
* Log mails to log file specified in $GLOBALS['egw_info']['server']['log_mail']
|
||||||
* or regular error_log for true (can be set either in DB or header.inc.php).
|
* or regular error_log for true (can be set either in DB or header.inc.php).
|
||||||
@ -31,6 +29,7 @@ class egw_mailer extends Horde_Mime_Mail
|
|||||||
protected $account;
|
protected $account;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Header / recipients set via Add(Address|Cc|Bcc|Replyto)
|
||||||
*
|
*
|
||||||
* @var Horde_Mail_Rfc822_List
|
* @var Horde_Mail_Rfc822_List
|
||||||
*/
|
*/
|
||||||
@ -140,12 +139,19 @@ class egw_mailer extends Horde_Mime_Mail
|
|||||||
/**
|
/**
|
||||||
* Write Bcc as header for storing in sent or as draft
|
* Write Bcc as header for storing in sent or as draft
|
||||||
*
|
*
|
||||||
* Bcc is normally only add to recipients while sending, but not added visible as header!
|
* Bcc is normally only add to recipients while sending, but not added visible as header.
|
||||||
|
*
|
||||||
|
* This function is should only be called AFTER calling send, or when NOT calling send at all!
|
||||||
*/
|
*/
|
||||||
function forceBccHeader()
|
function forceBccHeader()
|
||||||
{
|
{
|
||||||
$this->_headers->removeHeader('Bcc');
|
$this->_headers->removeHeader('Bcc');
|
||||||
$this->_headers->addHeader('Bcc', $this->bcc);
|
|
||||||
|
// only add Bcc header, if we have bcc's
|
||||||
|
if (count($this->bcc))
|
||||||
|
{
|
||||||
|
$this->_headers->addHeader('Bcc', $this->bcc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -226,16 +232,12 @@ class egw_mailer extends Horde_Mime_Mail
|
|||||||
|
|
||||||
// pass file as resource to Horde_Mime_Part::setContent()
|
// pass file as resource to Horde_Mime_Part::setContent()
|
||||||
if (!($resource = fopen($file, 'r')))
|
if (!($resource = fopen($file, 'r')))
|
||||||
//if (!($resource = file_get_contents($file)))
|
|
||||||
{
|
{
|
||||||
throw new egw_exception_not_found("File '$file' not found!");
|
throw new egw_exception_not_found("File '$file' not found!");
|
||||||
}
|
}
|
||||||
$part = new Horde_Mime_Part();
|
$part = new Horde_Mime_Part();
|
||||||
$part->setType($type ? $type : egw_vfs::mime_content_type($file));
|
$part->setType($type ? $type : egw_vfs::mime_content_type($file));
|
||||||
$part->setContents($resource);
|
$part->setContents($resource);
|
||||||
// this should not be necessary, because binary data get detected by mime-type,
|
|
||||||
// but at least Cyrus complains about NUL characters
|
|
||||||
$part->setTransferEncoding('base64', array('send' => true));
|
|
||||||
$part->setName($name ? $name : egw_vfs::basename($file));
|
$part->setName($name ? $name : egw_vfs::basename($file));
|
||||||
|
|
||||||
// store "text/calendar" as _htmlBody, to trigger "multipart/alternative"
|
// store "text/calendar" as _htmlBody, to trigger "multipart/alternative"
|
||||||
@ -244,6 +246,9 @@ class egw_mailer extends Horde_Mime_Mail
|
|||||||
$this->_htmlBody = $part;
|
$this->_htmlBody = $part;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
// this should not be necessary, because binary data get detected by mime-type,
|
||||||
|
// but at least Cyrus complains about NUL characters
|
||||||
|
$part->setTransferEncoding('base64', array('send' => true));
|
||||||
$part->setDisposition('attachment');
|
$part->setDisposition('attachment');
|
||||||
|
|
||||||
return $this->addMimePart($part);
|
return $this->addMimePart($part);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* eGroupWare API: Sending mail via egw_mailer
|
* EGroupware API: Sending mail via egw_mailer
|
||||||
*
|
*
|
||||||
* @link http://www.egroupware.org
|
* @link http://www.egroupware.org
|
||||||
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||||||
@ -17,11 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
class send extends egw_mailer
|
class send extends egw_mailer
|
||||||
{
|
{
|
||||||
var $err = array();
|
|
||||||
var $to_res = array();
|
|
||||||
// switching on debug with a numeric value other than 0, switches debug in PHPMailer/SMTP Class on
|
|
||||||
var $debug = false;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* eGW specific initialisation of the PHPMailer: charset, language, smtp-host, ...
|
* eGW specific initialisation of the PHPMailer: charset, language, smtp-host, ...
|
||||||
*
|
*
|
||||||
@ -30,59 +25,11 @@ class send extends egw_mailer
|
|||||||
*/
|
*/
|
||||||
function send()
|
function send()
|
||||||
{
|
{
|
||||||
if ($this->debug && is_numeric($this->debug)) $this->SMTPDebug = $this->debug;
|
|
||||||
if ($this->Subject || $this->Body || count($this->to))
|
if ($this->Subject || $this->Body || count($this->to))
|
||||||
{
|
{
|
||||||
if ($this->debug) error_log(__METHOD__." ".print_r($this->Subject,true)." to be send");
|
return parent::send();
|
||||||
return PHPMailer::Send();
|
|
||||||
}
|
}
|
||||||
parent::__construct(); // calling parent constructor
|
parent::__construct(); // calling parent constructor
|
||||||
|
|
||||||
$this->CharSet = translation::charset();
|
|
||||||
$this->IsSmtp();
|
|
||||||
|
|
||||||
// smtp settings from default account of current user
|
|
||||||
$account = emailadmin_account::read(emailadmin_account::get_default_acc_id(true)); // true=SMTP
|
|
||||||
$this->Host = $account->acc_smtp_host;
|
|
||||||
$this->Port = $account->acc_smtp_port;
|
|
||||||
switch($account->acc_smtp_ssl)
|
|
||||||
{
|
|
||||||
case emailadmin_account::SSL_TLS: // requires modified PHPMailer, or comment next two lines to use just ssl!
|
|
||||||
$this->Host = 'tlsv1://'.$this->Host;
|
|
||||||
break;
|
|
||||||
case emailadmin_account::SSL_SSL:
|
|
||||||
$this->Host = 'ssl://'.$this->Host;
|
|
||||||
break;
|
|
||||||
case emailadmin_account::SSL_STARTTLS: // PHPMailer uses 'tls' for STARTTLS, not ssl connection with tls version >= 1 and no sslv2/3
|
|
||||||
$this->Host = 'tls://'.$this->Host;
|
|
||||||
}
|
|
||||||
$this->SMTPAuth = !empty($account->acc_smtp_username);
|
|
||||||
$this->Username = $account->acc_smtp_username;
|
|
||||||
$this->Password = $account->acc_smtp_password;
|
|
||||||
$this->defaultDomain = $account->acc_domain;
|
|
||||||
// we do not want to use the phpmailer defaults, as it is bound to fail anyway
|
|
||||||
// !from should be connected to the account used!
|
|
||||||
$this->From = '';
|
|
||||||
$this->FromName = '';
|
|
||||||
// use smpt-username as sender, if available, but only if it is a full email address
|
|
||||||
// we use setFrom as of from now on as it sets From, FromName and Sender
|
|
||||||
// error_log(__METHOD__.__LINE__.array2string($account));
|
|
||||||
$Sender = $account->acc_smtp_username && strpos($account->acc_smtp_username, '@') !== false ?
|
|
||||||
$account->acc_smtp_username : $account->ident_email;
|
|
||||||
/*emailadmin_account Object has some possible info on the accounts realname
|
|
||||||
[acc_name] => example given (mail@domain.suffix)
|
|
||||||
[ident_realname] => example given
|
|
||||||
[ident_email] => mail@domain.suffix (maybe this is the content of $Sender !)
|
|
||||||
[ident_org] => not considered
|
|
||||||
[ident_name] => example
|
|
||||||
*/
|
|
||||||
$Name = ($account['ident_realname']?$account['ident_realname']:($account['ident_name']?$account['ident_name']:
|
|
||||||
($account['acc_name']?$account['acc_name']:$Sender)));
|
|
||||||
//error_log(__METHOD__.__LINE__.$Sender.','.$Name);
|
|
||||||
$this->setFrom($Sender,$Name);
|
|
||||||
$this->Hostname = $GLOBALS['egw_info']['server']['hostname'];
|
|
||||||
|
|
||||||
if ($this->debug) error_log(__METHOD__."() initialised egw_mailer with ".array2string($this)." from mail default account ".array2string($account->params));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user