249 lines
6.7 KiB
PHP
249 lines
6.7 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* AgileBill - Open Billing Software
|
||
|
*
|
||
|
* This body of work is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the Open AgileBill License
|
||
|
* License as published at http://www.agileco.com/agilebill/license1-4.txt
|
||
|
*
|
||
|
* For questions, help, comments, discussion, etc., please join the
|
||
|
* Agileco community forums at http://forum.agileco.com/
|
||
|
*
|
||
|
* @link http://www.agileco.com/
|
||
|
* @copyright 2004-2008 Agileco, LLC.
|
||
|
* @license http://www.agileco.com/agilebill/license1-4.txt
|
||
|
* @author Tony Landis <tony@agileco.com>
|
||
|
* @package AgileBill
|
||
|
* @version 1.4.93
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*
|
||
|
Email Handler Class
|
||
|
|
||
|
This class handles the interface to SMPT and Mail() functions.
|
||
|
|
||
|
$arr = Array(
|
||
|
'from_html' => 'true/false' (so we know whether to stripslashes or not)
|
||
|
'html' => '0/1',
|
||
|
'from_name' => '',
|
||
|
'from_email' => '',
|
||
|
'priority' => '0/1',
|
||
|
'to_email' => 'email@email.com',
|
||
|
'to_name' => '',
|
||
|
'bcc_list' => Array('email@email.com'),
|
||
|
'cc_list' => Array('email@email.com'),
|
||
|
'subject' => '',
|
||
|
'body_text' => '',
|
||
|
'body_html' => '',
|
||
|
'attachments' => Array(Array('file' => 'file.exe',
|
||
|
'data' => 'file data here...'))
|
||
|
'server' => 'mail.domain.com',
|
||
|
'account' => '',
|
||
|
'password' => '');
|
||
|
*/
|
||
|
class CORE_email
|
||
|
{
|
||
|
var $debug=false;
|
||
|
|
||
|
function PHP_Mail($arr)
|
||
|
{
|
||
|
### SET THE SMTP SETTINGS
|
||
|
#ini_set('sendmail_from', @$arr['from_email']);
|
||
|
#ini_set('SMTP', @$arr['server']);
|
||
|
|
||
|
### CC LIST
|
||
|
if(isset($arr['cc_list']) == 'array')
|
||
|
{
|
||
|
if(count($arr['cc_list'] > 0))
|
||
|
{
|
||
|
$cc = '';
|
||
|
for($i=0; $i<count($arr['cc_list']); $i++)
|
||
|
{
|
||
|
if($i == 0)
|
||
|
$cc .= $arr['cc_list'][$i];
|
||
|
else
|
||
|
$cc .= ','.$arr['cc_list'][$i].',';
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
### BCC LIST
|
||
|
if(isset($arr['bcc_list']) == 'array')
|
||
|
{
|
||
|
if(count($arr['bcc_list'] > 0))
|
||
|
{
|
||
|
$bcc = '';
|
||
|
for($i=0; $i<count($arr['bcc_list']); $i++)
|
||
|
{
|
||
|
if($i == 0)
|
||
|
$bcc .= $arr['bcc_list'][$i];
|
||
|
else
|
||
|
$bcc .= ','.$arr['bcc_list'][$i];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$headers = '';
|
||
|
|
||
|
### FROM:
|
||
|
$headers .= "From: \"".$arr['from_name']."\" <".$arr['from_email'].">\r \n";
|
||
|
$headers .= "Reply-To: \"".$arr['from_name']."\" <".$arr['from_email'].">\r \n";
|
||
|
|
||
|
# html/non-html version of body & headers
|
||
|
if(isset($arr['html']) && $arr['html'] == '1' && isset($arr['body_html']))
|
||
|
{
|
||
|
### specify MIME version 1.0
|
||
|
$headers .= "MIME-Version: 1.0\r \n";
|
||
|
$headers .= "Content-type: text/html; charset=iso-8859-1\r \n";
|
||
|
$body = $arr['body_html'];
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
### specify MIME version 1.0
|
||
|
$headers .= "MIME-Version: 1.0\r \n";
|
||
|
$headers .= "Content-type: text/plain; charset=iso-8859-1\r \n";
|
||
|
$body = $arr['body_text'];
|
||
|
}
|
||
|
|
||
|
|
||
|
### CC:
|
||
|
if(isset($cc))
|
||
|
$headers .= "Cc: ".$cc."\r \n";
|
||
|
|
||
|
### BCC:
|
||
|
if(isset($bcc))
|
||
|
$headers .= "Bcc: ".$bcc."\r \n";
|
||
|
|
||
|
### PRIORITY
|
||
|
if(isset($arr['priority']) && $arr['priority'] == '1')
|
||
|
$headers .= "X-Priority: 1";
|
||
|
else
|
||
|
$headers .= "X-Priority: 3";
|
||
|
|
||
|
|
||
|
/*
|
||
|
echo "<pre>";
|
||
|
echo print_r($arr);
|
||
|
echo $headers;
|
||
|
echo $body;
|
||
|
*/
|
||
|
|
||
|
### Strip Slashes
|
||
|
if (!isset($arr['from_html']) || @$arr['html_form'] == false) {
|
||
|
# from database, we must strip slashes
|
||
|
$arr['subject'] = stripslashes($arr['subject']);
|
||
|
$body = stripslashes($body);
|
||
|
} elseif (@$arr['from_html'] == true && get_magic_quotes_gpc()) {
|
||
|
# straight from html, we must strip slashes
|
||
|
$arr['subject'] = stripslashes($arr['subject']);
|
||
|
$body = stripslashes($body);
|
||
|
}
|
||
|
|
||
|
if($this->debug)
|
||
|
{
|
||
|
if(mail($arr['to_email'], $arr['subject'], $body, $headers)) {
|
||
|
global $C_debug;
|
||
|
$message = 'PHP mail() failed to send message "'.$arr['subject'].'" to "'.$arr['to_email'].'"';
|
||
|
$C_debug->alert('CORE:email.inc.php','SMTP_Mail', $message);
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if(@mail($arr['to_email'], $arr['subject'], $body, $headers)) {
|
||
|
global $C_debug;
|
||
|
$message = 'PHP mail() failed to send message "'.$arr['subject'].'" to "'.$arr['to_email'].'"';
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
function SMTP_Mail($arr)
|
||
|
{
|
||
|
### include the phpmailer class
|
||
|
require_once(PATH_INCLUDES."phpmailer/class.phpmailer.php");
|
||
|
$mail = new PHPMailer();
|
||
|
$mail->IsSMTP();
|
||
|
$mail->SMTPAuth = true;
|
||
|
$mail->Host = @$arr['server'];
|
||
|
$mail->Username = @$arr['account'];
|
||
|
$mail->Password = @$arr['password'];
|
||
|
$mail->From = $arr['from_email'];
|
||
|
$mail->FromName = $arr['from_name'];
|
||
|
$mail->AddAddress($arr['to_email'], @$arr['to_name']);
|
||
|
#$mail->AddReplyTo($arr['from_name'], $arr['from_email']);
|
||
|
|
||
|
|
||
|
### CC LIST
|
||
|
if(is_array(@$arr['cc_list']))
|
||
|
for($i=0; $i<count($arr['cc_list']); $i++)
|
||
|
$mail->AddCC($arr['cc_list'][$i], "");
|
||
|
|
||
|
### BCC LIST
|
||
|
if(is_array(@$arr['bcc_list']))
|
||
|
for($i=0; $i<count($arr['bcc_list']); $i++)
|
||
|
$mail->AddBCC($arr['bcc_list'][$i], "");
|
||
|
|
||
|
### Strip Slashes
|
||
|
if (empty($arr['from_html']) || @$arr['html_form'] == false) {
|
||
|
# from database, we must strip slashes
|
||
|
$arr['subject'] = stripslashes($arr['subject']);
|
||
|
@$arr['body_html'] = stripslashes($arr['body_html']);
|
||
|
@$arr['body_text'] = stripslashes($arr['body_text']);
|
||
|
} elseif (@$arr['from_html'] == true && get_magic_quotes_gpc()) {
|
||
|
# straight from html, we must strip slashes
|
||
|
$arr['subject'] = stripslashes($arr['subject']);
|
||
|
@$arr['body_html'] = stripslashes($arr['body_html']);
|
||
|
@$arr['body_text'] = stripslashes($arr['body_text']);
|
||
|
}
|
||
|
|
||
|
# html/non-html version of body & headers
|
||
|
if(isset($arr['html']) && $arr['html'] == '1' && isset($arr['body_html'])) {
|
||
|
$mail->IsHTML(true);
|
||
|
$mail->Body = @$arr['body_html'];
|
||
|
$mail->AltBody = @$arr['body_text'];
|
||
|
} else {
|
||
|
$mail->IsHTML(false);
|
||
|
$mail->Body = @$arr['body_text'];
|
||
|
$mail->WordWrap = 50;
|
||
|
}
|
||
|
|
||
|
# subject
|
||
|
$mail->Subject = $arr['subject'];
|
||
|
|
||
|
# PRIORITY
|
||
|
if(isset($arr['priority']) && $arr['priority'] == '1')
|
||
|
$mail->Priority = 1;
|
||
|
else
|
||
|
$mail->Priority = 3;
|
||
|
|
||
|
|
||
|
/* attachments
|
||
|
$mail->AddAttachment("/var/tmp/file.tar.gz");
|
||
|
$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
|
||
|
*/
|
||
|
|
||
|
if(!$mail->Send())
|
||
|
{
|
||
|
if($this->debug) {
|
||
|
global $C_debug;
|
||
|
$message = 'SMTP mail() failed to send message "'.$arr['subject'].'" to "'.$arr['to_email'].'" on server "'.$arr['server'].'"';
|
||
|
$C_debug->error('CORE:email.inc.php','SMTP_Mail', $message . ' ---- '.$mail->ErrorInfo);
|
||
|
echo "Message was not sent <p>";
|
||
|
echo "Mailer Error: " . $mail->ErrorInfo;
|
||
|
} else {
|
||
|
global $C_debug;
|
||
|
$message = 'SMTP mail() failed to send message "'.$arr['subject'].'" to "'.$arr['to_email'].'" on server "'.$arr['server'].'"';
|
||
|
$C_debug->error('CORE:email.inc.php','SMTP_Mail', $message. ' ---- '.$mail->ErrorInfo);
|
||
|
}
|
||
|
return false;
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
}
|
||
|
?>
|