mirror of
https://git.code.sf.net/p/seeddms/code
synced 2025-06-01 22:47:19 +00:00
use PEAR::Mail for sending mails, add support for smtp authentication
This commit is contained in:
parent
baca06fbae
commit
3b4b256763
|
@ -17,6 +17,7 @@
|
|||
* Include parent class
|
||||
*/
|
||||
require_once("inc.ClassNotify.php");
|
||||
require_once("Mail.php");
|
||||
|
||||
/**
|
||||
* Class to send email notifications to individuals or groups
|
||||
|
@ -31,14 +32,88 @@ require_once("inc.ClassNotify.php");
|
|||
*/
|
||||
class SeedDMS_Email extends SeedDMS_Notify {
|
||||
|
||||
var $smtp_server;
|
||||
|
||||
var $smtp_port;
|
||||
|
||||
var $smtp_user;
|
||||
|
||||
var $smtp_password;
|
||||
|
||||
var $from_address;
|
||||
|
||||
function __construct($from_address='', $smtp_server='', $smtp_port='', $smtp_username='', $smtp_password='') { /* {{{ */
|
||||
$this->smtp_server = $smtp_server;
|
||||
$this->smtp_port = $smtp_port;
|
||||
$this->smtp_user = $smtp_username;
|
||||
$this->smtp_password = $smtp_password;
|
||||
$this->from_address = $from_address;
|
||||
} /* }}} */
|
||||
|
||||
/**
|
||||
* Send mail to individual user
|
||||
*
|
||||
* @param mixed $sender individual sending the email. This can be a
|
||||
* user object or a string. If it is left empty, then
|
||||
* $this->from_address will be used.
|
||||
* @param object $recipient individual receiving the mail
|
||||
* @param string $subject key of string containing the subject of the mail
|
||||
* @param string $message key of string containing the body of the mail
|
||||
* @param array $params list of parameters which replaces placeholder in
|
||||
* the subject and body
|
||||
* @return false or -1 in case of error, otherwise true
|
||||
*/
|
||||
function toIndividual($sender, $recipient, $subject, $message, $params=array()) { /* {{{ */
|
||||
if ($recipient->getEmail()=="") return 0;
|
||||
|
||||
if ((!is_object($sender) && strcasecmp(get_class($sender), "SeedDMS_Core_User")) ||
|
||||
(!is_object($recipient) && strcasecmp(get_class($recipient), "SeedDMS_Core_User"))) {
|
||||
if (!is_object($recipient) && strcasecmp(get_class($recipient), "SeedDMS_Core_User")) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if(is_object($sender) && strcasecmp(get_class($sender), "SeedDMS_Core_User")) {
|
||||
$from = $sender->getFullName() ." <". $sender->getEmail() .">";
|
||||
} elseif(is_string($sender) && trim($sender) != "") {
|
||||
$from = $sender;
|
||||
} else {
|
||||
$from = $this->from_address;
|
||||
}
|
||||
|
||||
$lang = $recipient->getLanguage();
|
||||
|
||||
$message = getMLText("email_header", array(), "", $lang)."\r\n\r\n".getMLText($message, $params, "", $lang);
|
||||
$message .= "\r\n\r\n".getMLText("email_footer", array(), "", $lang);
|
||||
|
||||
$headers = array ();
|
||||
$headers['From'] = $from;
|
||||
$headers['To'] = $recipient->getEmail();
|
||||
$headers['Subject'] = getMLText($subject, $params, "", $lang);
|
||||
$headers['MIME-Version'] = "1.0";
|
||||
$headers['Content-type'] = "text/plain; charset=utf-8";
|
||||
|
||||
$mail_params = array();
|
||||
if($this->smtp_server) {
|
||||
$mail_params['host'] = $this->smtp_server;
|
||||
if($this->smtp_port) {
|
||||
$mail_params['port'] = $this->smtp_port;
|
||||
}
|
||||
if($this->smtp_user) {
|
||||
$mail_params['auth'] = true;
|
||||
$mail_params['username'] = $this->smtp_user;
|
||||
$mail_params['password'] = $this->smtp_password;
|
||||
}
|
||||
$mail = Mail::factory('smtp', $mail_params);
|
||||
} else {
|
||||
$mail = Mail::factory('mail', $mail_params);
|
||||
}
|
||||
|
||||
$result = $mail->send($recipient->getEmail(), $headers, $message);
|
||||
if (PEAR::isError($result)) {
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
$headers = array();
|
||||
$headers[] = "MIME-Version: 1.0";
|
||||
$headers[] = "Content-type: text/plain; charset=utf-8";
|
||||
|
@ -53,6 +128,7 @@ class SeedDMS_Email extends SeedDMS_Notify {
|
|||
mail($recipient->getEmail(), $subject, $message, implode("\r\n", $headers));
|
||||
|
||||
return true;
|
||||
*/
|
||||
} /* }}} */
|
||||
|
||||
function toGroup($sender, $groupRecipient, $subject, $message, $params=array()) { /* {{{ */
|
||||
|
@ -81,14 +157,17 @@ class SeedDMS_Email extends SeedDMS_Notify {
|
|||
return true;
|
||||
} /* }}} */
|
||||
|
||||
function sendPassword($sender, $recipient, $subject, $message) { /* {{{ */
|
||||
global $settings;
|
||||
function sendPassword($sender, $recipient, $subject, $message, $params = array()) { /* {{{ */
|
||||
|
||||
$this->toIndividual($sender, $recipient, $subject, $message, $params);
|
||||
|
||||
return true;
|
||||
|
||||
$headers = array();
|
||||
$headers[] = "MIME-Version: 1.0";
|
||||
$headers[] = "Content-type: text/plain; charset=utf-8";
|
||||
$headers[] = "From: ". $settings->_smtpSendFrom;
|
||||
$headers[] = "Reply-To: ". $settings->_smtpSendFrom;
|
||||
$headers[] = "From: ". $sender;
|
||||
$headers[] = "Reply-To: ". $sender;
|
||||
|
||||
$subject = "=?UTF-8?B?".base64_encode($this->replaceMarker($subject))."?=";
|
||||
return (mail($recipient->getEmail(), $subject, $this->replaceMarker($message), implode("\r\n", $headers)) ? 0 : -1);
|
||||
|
|
Loading…
Reference in New Issue
Block a user