Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
  • 0
GordoSatiro

No se envían los emails de recover

Question

Buenas. No se que paso con mi página, pero dejo de enviar todos los correos. Los de contenido eliminado, recuperar contraseña, activar cuenta. Todos, ya no envía ninguno. Lo raro es que tengo el mismo hosting que siempre y antes si me enviaba emails normalmente, pero ya no lo hace. 

 

web: https://craper.es/

 

ajax.recover.php:

<?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script');
/**
 * Controlador AJAX
 *
 * @name    ajax.recover.php
 * @author  PHPost Team
*/
	$tsLevel = 1; // solo visitantes
	$tsLevelMsg = $tsCore->setLevel($tsLevel, true);
	if($tsLevelMsg != 1){ die('0: '.$tsLevelMsg); }
	
	$email = $tsCore->setSecure($_REQUEST['r_email']);
	$user_info = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_id, user_name, user_registro, user_activo FROM u_miembros WHERE user_email = \''.$email.'\'') or die('0: '.show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.', 'db'));
	if(!db_exec('num_rows', $user_info)){
		die('0: <div class="dialog_box">El email no se encuentra registrado.</div>');
	}

	$tsData = db_exec('fetch_assoc', $user_info);
	
	include(TS_ROOT.DIRECTORY_SEPARATOR.'inc'.DIRECTORY_SEPARATOR.'class'.DIRECTORY_SEPARATOR.'c.emails.php');

	switch($action){
		case 'recover-pass':
			$tsEmail = new tsEmail('nope', 'chuck testa!'); // wtf
			$key = md5(sha1(uniqid(time().$email.microtime(true), true)));
			db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO w_contacts (user_id, user_email, `time`, `type`, `hash`) VALUES (\''.$tsData['user_id'].'\', \''.$email.'\', \''.time().'\', \'1\', \''.$key.'\')');

			$to = $email;
			$subject = 'Recuperar acceso';
			$body = 'Recuperar contrase&ntilde;a en <strong>'.$tsCore->settings['titulo'].'</strong><br /><br />
			Hola '.$tsData['user_name'].':<br />
			La verificación es usada para asegurar que sólo usted tenga acceso a 
			su cuenta de '.$tsCore->settings['titulo'].' y que, si alguna vez olvida su contrase&ntilde;a, tengamos una forma de generarle una nueva. <br /><br />
			Para recuperar su contrase&ntilde;a, acceda a <a href="'.$tsCore->settings['url'].'/password/'.$key.'/1/'.$tsCore->setSecure($email).'">este enlace</a><br /><br /><br />
			Si usted no pidi&oacute; recuperaci&oacute;n de su contrase&ntilde;a, ignore este e-mail.<br /><br />
			El staff de <strong>'.$tsCore->settings['titulo'].'</strong>';
			
			// <--
			$tsEmail->emailTo = $to;
			$tsEmail->emailSubject = $subject;
			$tsEmail->emailBody = $body;
			$tsEmail->emailHeaders = $tsEmail->setEmailHeaders();
			$tsEmail->sendEmail($from, $to, $subject, $body)  or die('0: Hubo un error al intentar procesar lo solicitado');
			die('1: <div class="dialog_box">Las intrucciones para recuperar su contrase&ntilde;a de <b>'.$tsCore->settings['titulo'].'</b> a <b>'.$email.'</b>, si no aparece el e-mail en su bandeja de entrar, revise en correo no deseado porque puede haberse filtrado..</div>');
			// -->
			break;
		case 'recover-validation':

		if($tsData['user_activo'] == 1) die('0: La cuenta ya se encuentra activada');

     		$tsEmail = new tsEmail($tsData, 'signup');
			$key = md5(sha1(uniqid(time().$email.microtime(true), true)));
			db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO w_contacts (user_id, user_email, `time`, `type`, `hash`) VALUES (\''.$tsData['user_id'].'\', \''.$email.'\', \''.time().'\', \'2\', \''.$key.'\')');

			$to = $email;
			$subject = ''.$tsData['user_name'].', active su cuenta ahora';
			$body = 'Activaci&oacute;n de cuentas en <strong>'.$tsCore->settings['titulo'].'</strong><br /><br />
			Hola '.$tsData['user_name'].':<br />
	        Le enviamos este email para confirmar el registro de
			su cuenta en '.$tsCore->settings['titulo'].'. <br /><br />
			Para terminar el registro y poder acceder a la comunidad, acceda a <a href="'.$tsCore->settings['url'].'/validar/'.$key.'/2/'.$tsCore->setSecure($email).'">este enlace</a><br /><br /><br />
			Si usted no pidi&oacute; recuperaci&oacute;n de su contrase&ntilde;a, ignore este e-mail.<br /><br />
			El staff de <strong>'.$tsCore->settings['titulo'].'</strong>';
			
			// <--
			$tsEmail->emailTo = $to;
			$tsEmail->emailSubject = $subject;
			$tsEmail->emailBody = $body;
			$tsEmail->emailHeaders = $tsEmail->setEmailHeaders();
			$tsEmail->sendEmail($from, $to, $subject, $body)  or die('0: Hubo un error al intentar procesar lo solicitado');
			die('1: <div class="box_cuerpo" style="padding: 12px 20px; border-top:1px solid #CCC">Hemos enviado un correo a <b>'.$email.'</b> con los &uacute;ltimos pasos para finalizar con el registro.<br><br>Si en los pr&oacute;ximos minutos no lo encuentras en tu bandeja de entrada, por favor, revisa tu carpeta de correo no deseado, es posible que se haya filtrado.<br><br>&iexcl;Muchas gracias!</div>');
			// -->
			break;
		default:
			die('0: Este archivo no existe.');
			break;
	}

c.emails.php:

<?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script');
/**
 * Modelo para el control del envio de emails
 *
 * @name    c.emails.php
 * @author  PHPost Team
 */
class tsEmail {
	
	var $email_info = array();		// REFERENCIA PARA ENVIAR UN EMAIL
	var $emailSubject;
	var $emailHeaders;
	var $emailBody;
	var $emailTo;
	var $is_error;		// SI OCURRE UN ERROR ESTA VARIABLE CONTENDRA EL NUMERO DE ERROR

	/*
		$tsEmailRef : tipo de email
		$tsEmailData: datos del email
	*/
	function __construct($tsEmailData,$tsEmailRef){
		$this->email_info = array(
			'ref' => $tsEmailRef,
			'data' => $tsEmailData
			);
	}
	/*
		setEmailInfo()
	*/
	function setEmail(){
		$this->emailSubject = $this->setEmailSubject();
		$this->emailHeaders = $this->setEmailHeaders();
		$this->emailBody = $this->setEmailBody();
		$this->emailTo = $this->email_info['user_email'];
	}
	/*
		sendEmail()
	*/
	function sendEmail(){
		if(mail($this->emailTo,$this->emailSubject,$this->emailBody,$this->emailHeaders)) return true;
		else return false;
	}
	/*
		setEmailSubject()
	*/
	function setEmailSubject(){
		switch($this->email_info['ref']) {
			case 'signup' :
				$subject = "Por favor completa tu registro.";
			break;
		}
	
		// ENCODE SUBJECT FOR UTF8
		return "=?UTF-8?B?".base64_encode($subject)."?=";
	}
	/*
		setEmailHeaders()
	*/
	function setEmailHeaders(){
		global $tsCore;
		// SET HEADERS
		$sender = $tsCore->settings['titulo']." <[email protected]".$tsCore->settings['domain'].">";
		//
		$headers = "MIME-Version: 1.0"."\n";
		$headers .= "Content-type: text/html; charset=utf-8"."\n";
		$headers .= "Content-Transfer-Encoding: 8bit"."\n";
		$headers .= "From: $sender"."\n";
		$headers .= "Return-Path: $sender"."\n";
		$headers .= "Reply-To: $sender\n";
		//
		return $headers;
	}
	/*
		setEmailBody()
	*/
	function setEmailBody(){
		switch($this->email_info['ref']) {
			case 'signup' :
				return $this->setRegisterEmail();
			break;
		}
	}
	/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
}

 

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0
hace 10 horas, Miguel92 dijo:

Bueno encontre el error...todavía no lo soluciono

9-04-22 04:13:58 SERVER -> CLIENT:
2019-04-22 04:13:58 SMTP NOTICE: EOF caught while checking if connected
SMTP Error: Could not authenticate.
SMTP Error: Could not authenticate. 

 

Gracias a este buen señor, lo pude arreglar

https://github.com/PHPMailer/PHPMailer/issues/1209#issuecomment-338898794

 

Comentando la linea "$smail->isSMTP();" comienza a funcionar sin problema alguno.

//$smail->isSMTP();

NgK8HEz.png

 

Por lo que termina siendo:

    /*
		sendEmail()
	*/
	function sendEmail(){
		global $tsCore;
		require $this->setup_sourcefolder . 'Exception.php';
		require $this->setup_sourcefolder . 'PHPMailer.php';
		require $this->setup_sourcefolder . 'SMTP.php';
		$smail = new PHPMailer(true);
		try {
		    //$smail->isSMTP();
		    $smail->Host = $this->setup_host;
		    $smail->SMTPAuth = true;
		    $smail->SMTPOptions = array(
		    'ssl' => array('verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true)
		    );
		    $smail->Username = $this->setup_address;
		    $smail->Password = $this->setup_password;
		    $smail->SMTPSecure = 'ssl';
		    $smail->Port = $this->setup_port;
		
		    $smail->setFrom($this->setup_address, $tsCore->settings['titulo']);
		    $smail->addAddress($this->emailTo);
		
		    $smail->isHTML(true);
		    $smail->Subject = $this->emailSubject;
		    $smail->Body    = $this->emailBody;
		    $smail->AltBody = strip_tags($this->emailBody);
		
		    $smail->send();
		    return true;
		} catch (Exception $e) {
		    return false;
		}
	}

 

Edited by GordoSatiro

Share this post


Link to post
Share on other sites
  • 1

No se envian porque el c.email.php es obsoleto! MIra este repositorio cuenta con una mini guía:

PHPMailer porque ya no se encuentra disponible el de 1TSR4SC11

Edited by Miguel92

Share this post


Link to post
Share on other sites
  • 1
hace 2 minutos, GordoSatiro dijo:

Ahora al actualizar el c.emails.php e instalando PHPMailer, salta este error:

INcRTDi.png

 

var $setup_host = 'smtp.hostinger.com.ar';
var $setup_address = '[email protected]';
var $setup_password = 'la-contraseña';
var $setup_port = '587';

 

Si, pensé que me pasaba porque lo estaba usando en localhost...ahora trataré de averiguar porque...No prometo nada

Share this post


Link to post
Share on other sites
  • 1

Bueno encontre el error...todavía no lo soluciono

9-04-22 04:13:58 SERVER -> CLIENT:
2019-04-22 04:13:58 SMTP NOTICE: EOF caught while checking if connected
SMTP Error: Could not authenticate.
SMTP Error: Could not authenticate. 

 

Share this post


Link to post
Share on other sites
  • 0

Capaz te salga un mensaje como este

 

> Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; tsEmail has a deprecated constructor in C:\xampp\htdocs\Linkeros\inc\class\c.emails.php on line 9

 

Si aparece busca en inc/class/c.emails.php y debajo de

class tsEmail {

agregas lo siguiente

    function __construct() {
        // ASÍ COMO ESTA
    }

 

En el caso que quieras actualizar los archivos

https://github.com/PHPMailer/PHPMailer

Share this post


Link to post
Share on other sites
  • 0
hace 44 minutos, Miguel92 dijo:

No se envian porque el c.email.php es obsoleto! MIra este repositorio cuenta con una mini guía:

PHPMailer porque ya no se encuentra disponible el de 1TSR4SC11

Ahora al actualizar el c.emails.php e instalando PHPMailer, salta este error:

INcRTDi.png

 

var $setup_host = 'smtp.hostinger.com.ar';
var $setup_address = '[email protected]';
var $setup_password = 'la-contraseña';
var $setup_port = '587';

 

Share this post


Link to post
Share on other sites
  • 0

Si lo sé, ya lo había visto cuando buscaba la solución, si te sirvió así genial!

 

Pero a mi me lanza (PHP 7.3 & SMARTY 3.1.32) no sé si tiene que ver

ld not instantiate mail function.
0: Hubo un error al intentar procesar lo solicitado 

 

Que versión de php usas?

Share this post


Link to post
Share on other sites
  • 0
1 hour ago, Miguel92 dijo:

Si lo sé, ya lo había visto cuando buscaba la solución, si te sirvió así genial!

 

Pero a mi me lanza (PHP 7.3 & SMARTY 3.1.32) no sé si tiene que ver

ld not instantiate mail function.
0: Hubo un error al intentar procesar lo solicitado 

 

Que versión de php usas?

PHP 7.1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Patrocinador



  • ×