This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/modules/core/email.inc.php

249 lines
6.7 KiB
PHP
Raw Normal View History

<?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;
}
}
?>