'smtp.example.com', * 'username' => 'nomusuari@example.com', * 'password' => 'contrassenyaSegura', * 'port' => 465, * ]; */ // Incloem la biblioteca PHPMailer use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; // Incloem el fitxer de configuració $config = require 'config.php'; // Funció per enviar un correu electrònic function enviarCorreu(string $destinatari, string $assumpte, string $missatge): bool { global $config; try { $mail = new PHPMailer(true); //activem el debug al màxim per veure tots els errors ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); // Opcions de depuració $mail->SMTPDebug = 2; // Nivells: 0 = cap, 1 = errors i missatges, 2 = missatges de l'estat del client/servidor, 3 = més detallat, 4 = traça detallada $mail->Debugoutput = 'html'; // Format de sortida (html o text) //**El servidor té un problema amb els certificats i hem de deshabilitar un nivell de seguretat. //En un entorn real NO S'HAURIA DE FER, sinó que s'hauria d'arreglar la configuració //del servidor** $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); // Configuració del servidor SMTP $mail->isSMTP(); $mail->Host = $config['server']; $mail->SMTPAuth = true; $mail->Username = $config['username']; $mail->Password = $config['password']; #º $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Activar encriptació TLS $mail->Port = $config['port']; // Configuració del remitent i destinatari $mail->setFrom($config['username'], 'Nom del Remitent'); $mail->addAddress($destinatari); // Contingut del correu $mail->isHTML(true); $mail->Subject = $assumpte; $mail->Body = $missatge; // Mostrar informació del servidor per consola error_log("Servidor: " . $mail->Host); error_log("Port: " . $mail->Port); error_log("Nom d'usuari: " . $mail->Username); error_log("Contrasenya: " . $mail->Password); error_log("------------------------------- ENVIA !"); // Enviem el correu $mail->send(); return true; } catch (Exception $e) { error_log("Error en enviar el correu: " . $mail->ErrorInfo); return false; } } // Processar el formulari if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Sanejament de les dades del formulari $destinatari = filter_input(INPUT_POST, 'destinatari', FILTER_VALIDATE_EMAIL); $assumpte = filter_input(INPUT_POST, 'assumpte', FILTER_SANITIZE_STRING); $missatge = filter_input(INPUT_POST, 'missatge', FILTER_SANITIZE_STRING); if ($destinatari && $assumpte && $missatge) { if (enviarCorreu($destinatari, $assumpte, $missatge)) { echo "El correu s'ha enviat correctament."; } else { echo "Hi ha hagut un error en enviar el correu."; } } else { echo "Si us plau, ompliu tots els camps correctament."; } } ?>