Proving CLU
03-08-2024 21:15
Problema con envios de correos con PHP
Tengo una web que usa la funcion nativa de PHP mail() para enviar correos y no me funciona, como ya he teneido en otras ocasiones problemas con esta funcion he cambiado todo el código para usar la librería PHPmailer pero tampoco me funciona, el proceso lo acaba correctamente y no me da ningún tipo de error, de hecho en el control de errores de mi web intento cazar si da algún error pero no da ninguno pero nunca llega al destino, he probado con muchas cuentas de correo pero no llega nunca. Esta funcionalidad es imprescindible para cualquier hosting porque para cualquier web que tenga acceso de usuarios es necesario por ejemplo para cambiar la clave
Site.es
03-08-2024 22:44
Buenas noches.
Para enviar correos electrónicos a través del script PHP de su sitio web, debe enviarlos a través de SMTP. De lo contrario, no pasarán nuestros filtros de spam.
Si está utilizando WordPress, hay muchos complementos que puede usar para enviar correos electrónicos a través de SMTP.
De lo contrario, debe usar PHPMailer.
Si no está viendo errores, simplemente busque en DirectAdmin 'logs' y encontrará una página donde puede ver todos los registros de errores de sus scripts. Esto puede ser muy útil para la depuración.
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
// Cargar el autoloader de Composer
require 'vendor/autoload.php';
// Crear una instancia de PHPMailer
$mail = new PHPMailer(true);
try {
// Configuración del servidor
$mail->isSMTP();
$mail->Host = 'smtp.example.com'; // Configurar el servidor SMTP para enviar a través de él
$mail->SMTPAuth = true;
$mail->Username = '[email protected]'; // Nombre de usuario SMTP
$mail->Password = 'tu-contraseña-de-correo'; // Contraseña SMTP
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Habilitar encriptación TLS; también se acepta PHPMailer::ENCRYPTION_SMTPS
$mail->Port = 587; // Puerto TCP para conectarse
// Destinatarios
$mail->setFrom('[email protected]', 'Tu Nombre');
$mail->addAddress('[email protected]', 'Nombre del Destinatario'); // Añadir un destinatario
// $mail->addAddress('[email protected]'); // El nombre es opcional
// $mail->addReplyTo('[email protected]', 'Información');
// $mail->addCC('[email protected]');
// $mail->addBCC('[email protected]');
// Adjuntos (opcional)
// $mail->addAttachment('/var/tmp/file.tar.gz'); // Añadir adjuntos
// $mail->addAttachment('/tmp/image.jpg', 'nuevo.jpg'); // Nombre opcional
// Contenido
$mail->isHTML(true); // Configurar el formato del correo electrónico a HTML
$mail->Subject = 'Aquí está el asunto';
$mail->Body = 'Este es el cuerpo del mensaje HTML <b>en negrita!</b>';
$mail->AltBody = 'Este es el cuerpo en texto plano para clientes de correo que no admiten HTML';
$mail->send();
echo 'El mensaje ha sido enviado';
} catch (Exception $e) {
echo "El mensaje no pudo ser enviado. Error de correo: {$mail->ErrorInfo}";
}
?>