composer require phpmailer/phpmailer
Després de fer la instal·lació de la dependència haurem d'anar a l'arxiu **api.php** que està en la següent ruta:
back/elTeuNomDeProjecte/routes/api.php
Dins d'aquest arxiu haurem de crear un endpoind e importa el controlador que hem creat per poder enviar el mail i també afegir la view perquè l'usuari pugui veure el contingut del mail.
Per crear un controlador a **Laravel** es fa de la següent manera:
php artisan make:controller ElNomDelTeuController
Arxiu **api.php**.
'Este es un mensaje dinámico']);
});
Per poder crear una view per l'email haurem d'anar a la següent ruta, farem botó dret "Nova carpeta", dintre de la nova carpeta tornarem a fer botó dret "Nou arxiu" i li posem un nom, per exemple **ElMeuBlade.blade.php**:
back/elTeuNomDeProjecte/resources
Les views es fan amb HTML. Un exemple d'una view:
**IMPORTANT!**. Tindre en compte els noms dels objectes i variables si no, sortirà un text per defecte.
{{ $subject ?? 'Example App' }}
{{ $subject ?? 'Example App' }}
Bienvenido: {{ $name ?? 'User' }} {{$lastname ?? 'User' }}
Pulsa en el siguiente enlace para acceder al cuestionario:
Els controladors es troben en la següent ruta:
back/elTeuNomDeProjecte/app/Http/Controllers/ElNomDelTeuController
Arxiu ElNomDelTeuController.php.
validate([
'subject' => 'required|string',
'message' => 'required|string',
'to' => 'required|array',
'to.*' => 'required|email', // Cada element hi ha que se valid
]);
// Configurar PHPMailer
$mail = new PHPMailer(true);
try {
// Configuració del servidor SMTP
$mail->isSMTP();
$mail->CharSet = 'UTF-8';
$mail->Host = env("MAIL_HOST");
$mail->SMTPAuth = true;
$mail->Username = env("MAIL_USERNAME");
$mail->Password = env("MAIL_PASSWORD");
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->SMTPOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
]
];
// Remitent
$mail->setFrom('correu@example.com', 'Example App');
// Afegir el destinatari principal (es pot deixar buit si no hi ha principal)
$mail->addAddress('correu@example.com'); // Este puede ser tu dirección de control
// Afegir cada destinatari com BCC (còpia oculta)
foreach ($validatedData['to'] as $recipient) {
$mail->addBCC($recipient);
}
// En cas de tindre una vista (blade) la renderitzarem perquè l'usuari el vegi la informació
// en el correu
$htmlContent = View::make('email.notification', [
'subject' => $validatedData['subject'],
'message' => $validatedData['message'],
])->render();
// Contingut del correu
$mail->isHTML(true);
$mail->Subject = $validatedData['subject'];
$mail->Body = $htmlContent;
// Enviar el correu
$mail->send();
return response()->json([
'message' => 'Email sent successfully'
]);
} catch (Exception $e) {
return response()->json([
'error' => "Error sending email: {$mail->ErrorInfo}"
], 500);
}
}
}