Files
luos/gulliver/system/class.mailer.php

316 lines
10 KiB
PHP
Raw Normal View History

2010-12-02 23:34:41 +00:00
<?php
/**
* class.mailer.php
*
* @package gulliver.system
2011-01-24 21:07:14 +00:00
*
2010-12-02 23:34:41 +00:00
* ProcessMaker Open Source Edition
2011-01-24 21:07:14 +00:00
* Copyright (C) 2004 - 2011 Colosa Inc.
*
2010-12-02 23:34:41 +00:00
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program 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
2010-12-02 23:34:41 +00:00
* GNU Affero General Public License for more details.
*
2010-12-02 23:34:41 +00:00
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
2010-12-02 23:34:41 +00:00
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
*
2010-12-02 23:34:41 +00:00
*/
G::LoadThirdParty( 'phpmailer', 'class.phpmailer' );
2010-12-02 23:34:41 +00:00
/* Send emails using the class "PHPMailer"
* Email server configuration constants:
* MAIL_MAILER mail/smtp
* MAIL_HOST email.server.address
* MAIL_SMTPAUTH true/false
* MAIL_USERNAME Email Username (smtp)
* MAIL_PASSWORD Email Password (smtp)
* MAIL_TIMEOUT Email Timeout (smtp)
* MAIL_CHARSET Email Charset "utf-8"
* MAIL_ENCODING Email Encoding "base64"
* Other required configuration constants:
* PATH_HTMLMAIL Email templates path
* @author David Callizaya <davidsantos@colosa.com>
*/
/**
*
2011-01-14 11:51:34 +00:00
* @package gulliver.system
*
*/
2011-01-14 11:51:34 +00:00
2010-12-02 23:34:41 +00:00
class mailer
{
/**
* instanceMailer
*
* @return object(PHPMailer) $mailer
*/
function instanceMailer ()
{
$mailer = new PHPMailer();
$mailer->PluginDir = PATH_THIRDPARTY . 'phpmailer/';
//DEFAULT CONFIGURATION
$mailer->Mailer = 'mail';
$mailer->Host = "";
$mailer->SMTPAuth = false;
$mailer->Username = "";
$mailer->Password = "";
$mailer->Timeout = 30;
$mailer->CharSet = 'utf-8';
$mailer->Encoding = 'base64';
if (defined( 'MAIL_MAILER' )) {
$mailer->Mailer = MAIL_MAILER;
}
if (defined( 'MAIL_HOST' )) {
$mailer->Host = MAIL_HOST;
}
if (defined( 'MAIL_SMTPAUTH' )) {
$mailer->SMTPAuth = MAIL_SMTPAUTH;
}
if (defined( 'MAIL_USERNAME' )) {
$mailer->Username = MAIL_USERNAME;
}
if (defined( 'MAIL_PASSWORD' )) {
$mailer->Password = MAIL_PASSWORD;
}
if (defined( 'MAIL_TIMEOUT' )) {
$mailer->Timeout = MAIL_TIMEOUT;
}
if (defined( 'MAIL_CHARSET' )) {
$mailer->CharSet = MAIL_CHARSET;
}
if (defined( 'MAIL_ENCODING' )) {
$mailer->Encoding = MAIL_ENCODING;
}
return $mailer;
2010-12-02 23:34:41 +00:00
}
/* ARPA INTERNET TEXT MESSAGES
* Returns an array with the "name" and "email" of an ARPA type
* email $address.
* @author David Callizaya
*/
function arpaEMAIL ($address)
{
$arpa = array ();
preg_match( "/([^<>]*)(?:\<([^<>]*)\>)?/", $address, $matches );
$isEmail = preg_match( "/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i", $matches[1] );
$arpa['email'] = ((isset( $matches[2] )) && ($matches[2] != '')) ? $matches[2] : (($isEmail) ? $matches[1] : '');
$arpa['name'] = ($isEmail) ? '' : $matches[1];
return $arpa;
}
/**
* sendTemplate
*
* @param string $from default value empty
* @param string $target default value default value empty
* @param string $cc default value default value empty
* @param string $bcc default value default value empty
* @param string $subject default value empty
* @param array $Fields
* @param string $templateFile default value "empty.html"
* @param array $attachs
* @param boolean $plainText default value false
* @param boolean $returnContent default value false
*
* @return object $content or $result
*/
function sendTemplate ($from = "", $target = "", $cc = "", $bcc = "", $subject = "", $Fields = array(), $templateFile = "empty.html", $attachs = array(), $plainText = false, $returnContent = false)
{
// Read the content of the TemplateFile
$fp = fopen( PATH_HTMLMAIL . $templateFile, "r" );
$content = fread( $fp, filesize( PATH_HTMLMAIL . $templateFile ) );
fclose( $fp );
//Replace the @@Fields with the $Fields array.
$content = mailer::replaceFields( $Fields, $content );
//Compatibility with class.Application
if ($attachs === 'FALSE') {
return $content;
}
//Create the alternative body (text only)
//$h2t =& new html2text($content);
$text = ''; //$h2t->get_text();
//Prepate el phpmailer
$mailer = mailer::instanceMailer();
$arpa = mailer::arpaEMAIL( $from );
$mailer->From = $arpa['email'] == '' ? $mailer->defaultEMail : $arpa['email'];
$mailer->FromName = $arpa['name'];
$arpa = mailer::arpaEMAIL( $target );
$mailer->AddAddress( $arpa['email'], $arpa['name'] );
$mailer->AddCC( $cc );
$mailer->AddBCC( $bcc );
$mailer->Subject = $subject;
if ($plainText) {
$content = $text;
}
if ($content === '') {
$content = 'empty';
}
$mailer->Body = $content;
//$mailer->AltBody = $text;
$mailer->isHTML( ! $plainText );
//Attach the required files
if (is_array( $attachs ))
if (sizeof( $attachs ) > 0)
foreach ($attachs as $aFile)
$mailer->AddAttachment( $aFile, basename( $aFile ) );
//Send the e-mail.
for ($r = 1; $r <= 4; $r ++) {
$result = $mailer->Send();
if ($result) {
break;
}
}
//unset($h2t);
if ($result && $returnContent) {
return $content;
}
return $result;
}
/**
* sendHtml
*
* @param string $from default value empty
* @param string $target default value empty
* @param string $cc default value empty
* @param string $bcc default value empty
* @param string $subject default value empty
* @param array $Fields
* @param string $content default value empty
* @param array $attachs default value empty
* @param string $plainText default false
* @param boolean $returnContent default value false
*
* @return object $result
*/
function sendHtml ($from = "", $target = "", $cc = "", $bcc = "", $subject = "", $Fields = array(), $content = "", $attachs = array(), $plainText = false, $returnContent = false)
{
//Replace the @@Fields with the $Fields array.
$content = mailer::replaceFields( $Fields, $content );
//Create the alternative body (text only)
//$h2t =& new html2text($content);
$text = ''; //$h2t->get_text();
//Prepate el phpmailer
$mailer = mailer::instanceMailer();
$arpa = mailer::arpaEMAIL( $from );
$mailer->From = $arpa['email'] == '' ? $mailer->defaultEMail : $arpa['email'];
$mailer->FromName = $arpa['name'];
$arpa = mailer::arpaEMAIL( $target );
$mailer->AddAddress( $arpa['email'], $arpa['name'] );
$mailer->AddCC( $cc );
$mailer->AddBCC( $bcc );
$mailer->Subject = $subject;
if ($plainText) {
$content = $text;
}
if ($content === '') {
$content = 'empty';
}
$mailer->Body = $content;
//$mailer->AltBody = $text;
$mailer->isHTML( ! $plainText );
//Attach the required files
if (is_array( $attachs ))
if (sizeof( $attachs ) > 0)
foreach ($attachs as $aFile)
$mailer->AddAttachment( $aFile, basename( $aFile ) );
//Send the e-mail.
for ($r = 1; $r <= 4; $r ++) {
$result = $mailer->Send();
if ($result) {
break;
}
}
//unset($h2t);
if ($result && $returnContent) {
return $content;
}
return $result;
2010-12-02 23:34:41 +00:00
}
/**
* sendText
*
* @param string $from default value empty
* @param string $target default value empty
* @param string $cc default value empty
* @param string $bcc default value empty
* @param string $subject default value empty
* @param string $content default value empty
* @param array $attachs
*
* @return object $result
*/
function sendText ($from = "", $target = "", $cc = "", $bcc = "", $subject = "", $content = "", $attachs = array())
{
//Prepate el phpmailer
$mailer = mailer::instanceMailer();
$arpa = mailer::arpaEMAIL( $from );
$mailer->From = $arpa['email'] == '' ? $mailer->defaultEMail : $arpa['email'];
$mailer->FromName = $arpa['name'];
$arpa = mailer::arpaEMAIL( $target );
$mailer->AddAddress( $arpa['email'], $arpa['name'] );
$mailer->AddCC( $cc );
$mailer->AddBCC( $bcc );
$mailer->Subject = $subject;
if ($content === '') {
$content = 'empty';
}
$mailer->Body = $content;
$mailer->AltBody = $content;
$mailer->isHTML( false );
//Attach the required files
if (sizeof( $attachs ) > 0) {
foreach ($attachs as $aFile) {
$mailer->AddAttachment( $aFile, basename( $aFile ) );
}
}
//Send the e-mail.
for ($r = 1; $r <= 4; $r ++) {
$result = $mailer->Send();
if ($result) {
break;
}
}
return $result;
}
/**
* replaceFields
*
* @param array $Fields
* @param string $content default value string empty
*
* @return none
*/
function replaceFields ($Fields = array(), $content = "")
{
return G::replaceDataField( $content, $Fields );
2010-12-02 23:34:41 +00:00
}
/**
* html2text
*
* empty
*
* @return none
*/
function html2text ()
{
//$h2t =& new html2text($content);
//return $h2t->get_text();
}
2010-12-02 23:34:41 +00:00
}