tengo la version 1.2.0 este cambio de codigo fue necesario, agregarle encriptacion y referencias a PHPMailer, sino me salia siempre ese error de authenticacion al intentar recuperar la contrasenia, puerto 465, gmail como smtp, y password generada en gmail hay videos en youtube de como hacerlo
<?php
/**
* WebEngine CMS
*
https://webenginecms.org/ *
* @version 1.2.0
* @author Lautaro Angelico <http://lautaroangelico.com/>
* @copyright (c) 2013-2019 Lautaro Angelico, All Rights Reserved
*
* Licensed under the MIT license
*
http://opensource.org/licenses/MIT */
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
class Email {
private $_active = false;
private $_smtp = false;
private $_from;
private $_name;
private $_templates = array();
private $_templatesPath = __PATH_EMAILS__;
private $_smtpHost;
private $_smtpPort;
private $_smtpUser;
private $_smtpPass;
private $_template;
private $_message;
private $_to = array();
private $_subject;
private $_variables = array();
private $_values = array();
private $_isCustomTemplate=false;
private PHPMailer $mail;
function __construct() {
# load configs
$configs = gconfig('email',true);
if(!is_array($configs)) throw new Exception(lang('error_90'));
# set configurations
$this->_active = $configs['active'];
$this->_smtp = $configs['smtp_active'];
$this->_from = $configs['send_from'];
$this->_name = $configs['send_name'];
$this->_smtpHost = $configs['smtp_host'];
$this->_smtpPort = $configs['smtp_port'];
$this->_smtpUser = $configs['smtp_user'];
$this->_smtpPass = $configs['smtp_pass'];
# check if templates exist
if(!is_array($configs['email_templates']['template'])) throw new Exception();
# load templates list
$templates = array();
foreach($configs['email_templates']['template'] as $template) {
$templates[$template['filename']] = str_replace("{SERVER_NAME}", config('server_name',true), $template['subject']);
}
# server name variable
$this->addVariable("{SERVER_NAME}", config('server_name',true));
# save templates
$this->_templates = $templates;
# phpmailer instance
$this->mail = new PHPMailer(true);
}
public function setSubject($subject) {
$this->_subject = $subject;
}
public function setFrom($email, $name="Unknown") {
$this->_from = $email;
$this->_name = $name;
}
public function setMessage($message) {
$this->_message = $message;
}
public function setTemplate($template) {
if(!array_key_exists($template, $this->_templates)) throw new Exception(lang('error_91'));
$this->_template = $template;
$this->_subject = $this->_templates[$template];
}
public function addVariable($variable, $value) {
$this->_variables[] = $variable;
$this->_values[] = $value;
}
public function addAddress($email) {
if(!Validator::Email($email)) throw new Exception(lang('error_92'));
$this->_to[] = $email;
}
private function _loadTemplate() {
if(!$this->_template) throw new Exception(lang('error_93'));
// custom template
if($this->_isCustomTemplate) {
if(!file_exists($this->_template)) throw new Exception(lang('error_94'));
return file_get_contents($this->_template);
}
if(!file_exists($this->_templatesPath . $this->_template . '.txt')) throw new Exception(lang('error_91'));
return file_get_contents($this->_templatesPath . $this->_template . '.txt');
}
private function _prepareTemplate() {
return str_replace($this->_variables, $this->_values, $this->_loadTemplate());
}
public function send() {
if(!$this->_active) throw new Exception(lang('error_48',true));
if(!$this->_message) {
if(!$this->_template) throw new Exception(lang('error_95'));
}
if(!is_array($this->_to)) throw new Exception(lang('error_96'));
if($this->_smtp) {
$this->mail->IsSMTP();
$this->mail->SMTPAuth = true;
$this->mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$this->mail->Host = $this->_smtpHost;
$this->mail->Port = $this->_smtpPort;
$this->mail->Username = $this->_smtpUser;
$this->mail->Password = $this->_smtpPass;
}
$this->mail->SetFrom($this->_from, $this->_name);
foreach($this->_to as $address) {
$this->mail->AddAddress($address);
}
if(!$this->_subject) throw new Exception(lang('error_97'));
$this->mail->Subject = $this->_subject;
if(!$this->_message) {
$this->mail->MsgHTML($this->_prepareTemplate());
} else {
$this->mail->MsgHTML($this->_message);
}
if($this->mail->Send()) return true;
return false;
}
public function setCustomTemplate($template) {
$this->_template = $template;
$this->_isCustomTemplate = true;
}
}