mirror of
				https://github.com/Znote/ZnoteAAC.git
				synced 2025-11-04 04:46:23 +01:00 
			
		
		
		
	* PHPMailer 6.0 support * dont require the PHPMailer files until sendMail is called * cs fixes
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
use PHPMailer\PHPMailer\PHPMailer;
 | 
						|
use PHPMailer\PHPMailer\Exception;
 | 
						|
 | 
						|
class Mail {
 | 
						|
	protected $_config = false;
 | 
						|
 | 
						|
	/**
 | 
						|
	 * @param  array $config
 | 
						|
	 * @access public
 | 
						|
	 * @return void
 | 
						|
	**/
 | 
						|
	public function __construct($config) {
 | 
						|
		$this->_config = $config;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Sets the cache expiration limit (IMPORTANT NOTE: seconds, NOT ms!).
 | 
						|
	 *
 | 
						|
	 * @param  string $to, string $title, string $text, string $accname
 | 
						|
	 * @access public
 | 
						|
	 * @return boolean
 | 
						|
	**/
 | 
						|
	public function sendMail($to, $title, $text, $accname = '') {
 | 
						|
		//SMTP needs accurate times, and the PHP time zone MUST be set
 | 
						|
		//This should be done in your php.ini, but this is how to do it if you don't have access to that
 | 
						|
		//date_default_timezone_set('Etc/UTC');
 | 
						|
 | 
						|
		require __DIR__.'/../../PHPMailer/src/Exception.php';
 | 
						|
		require __DIR__.'/../../PHPMailer/src/PHPMailer.php';
 | 
						|
		require __DIR__.'/../../PHPMailer/src/SMTP.php';
 | 
						|
 | 
						|
		//Create a new PHPMailer instance
 | 
						|
		$mail = new PHPMailer();
 | 
						|
 | 
						|
		//Tell PHPMailer to use SMTP
 | 
						|
		$mail->isSMTP();
 | 
						|
 | 
						|
		//Enable SMTP debugging
 | 
						|
		// 0 = off (for production use)
 | 
						|
		// 1 = client messages
 | 
						|
		// 2 = client and server messages
 | 
						|
		$mail->SMTPDebug = ($this->_config['debug']) ? 2 : 0;
 | 
						|
 | 
						|
		//Ask for HTML-friendly debug output
 | 
						|
		$mail->Debugoutput = 'html';
 | 
						|
 | 
						|
		//Set the hostname of the mail server
 | 
						|
		$mail->Host = $this->_config['host'];
 | 
						|
 | 
						|
		//Set the SMTP port number - likely to be 25, 465 or 587
 | 
						|
		$mail->Port = $this->_config['port'];
 | 
						|
 | 
						|
		//Whether to use SMTP authentication
 | 
						|
		$mail->SMTPAuth = true;
 | 
						|
		$mail->SMTPSecure = $this->_config['securityType'];
 | 
						|
 | 
						|
		//Username to use for SMTP authentication
 | 
						|
		$mail->Username = $this->_config['username'];
 | 
						|
 | 
						|
		//Password to use for SMTP authentication
 | 
						|
		$mail->Password = $this->_config['password'];
 | 
						|
 | 
						|
		//Set who the message is to be sent from
 | 
						|
		$mail->setFrom($this->_config['email'], $this->_config['fromName']);
 | 
						|
 | 
						|
		//Set who the message is to be sent to
 | 
						|
		$mail->addAddress($to, $accname);
 | 
						|
 | 
						|
		//Set the subject line
 | 
						|
		$mail->Subject = $title;
 | 
						|
 | 
						|
		// Body
 | 
						|
		$mail->Body = $text;
 | 
						|
 | 
						|
		// Convert HTML -> plain for legacy mail recievers
 | 
						|
		// Create new lines instead of <br> html tags.
 | 
						|
		$text = str_replace("<br>", "\n", $text);
 | 
						|
		$text = str_replace("<br\>", "\n", $text);
 | 
						|
		$text = str_replace("<br \>", "\n", $text);
 | 
						|
		// Then get rid of the rest of the html tags.
 | 
						|
		$text = strip_tags($text);
 | 
						|
 | 
						|
		//Replace the plain text body with one created manually
 | 
						|
		$mail->AltBody = $text;
 | 
						|
 | 
						|
 | 
						|
		//send the message, check for errors
 | 
						|
		$status = false;
 | 
						|
		if (!$mail->send()) {
 | 
						|
		    echo "Mailer Error: " . $mail->ErrorInfo;
 | 
						|
		    exit();
 | 
						|
		} else {
 | 
						|
		    $status = true;
 | 
						|
		}
 | 
						|
		return $status;
 | 
						|
	}
 | 
						|
}
 |