Laravel - Envío de correo electrónico
Laravel usa una biblioteca gratuita rica en funciones SwiftMailerpara enviar correos electrónicos. Usando la función de biblioteca, podemos enviar correos electrónicos fácilmente sin demasiados problemas. Las plantillas de correo electrónico se cargan de la misma forma que las vistas, lo que significa que puede utilizar la sintaxis Blade e inyectar datos en sus plantillas.
La siguiente tabla muestra la sintaxis y los atributos de send función -
Sintaxis | enviar vacío (cadena | matriz $ vista, matriz $ datos, Cierre | cadena $ devolución de llamada) |
Parámetros |
|
Devoluciones | nada |
Descripción | Envía correo electrónico. |
En el tercer argumento, el cierre de $ callback recibió la instancia del mensaje y con esa instancia también podemos llamar a las siguientes funciones y alterar el mensaje como se muestra a continuación.
- $ mensaje → asunto ('Bienvenido al punto de tutoriales');
- $ mensaje → de ('[email protected]', 'Sr. Ejemplo');
- $ mensaje → a ('correo electró[email protected]', 'Sr. Ejemplo');
Algunos de los métodos menos comunes incluyen:
- $ mensaje → remitente ('[email protected]', 'Sr. Ejemplo');
- $ mensaje → returnPath ('[email protected]');
- $ mensaje → cc ('correo electró[email protected]', 'Sr. Ejemplo');
- $ mensaje → bcc ('correo electró[email protected]', 'Sr. Ejemplo');
- $ mensaje → responder a ('[email protected]', 'Sr. Ejemplo');
- $ mensaje → prioridad (2);
Para adjuntar o incrustar archivos, puede utilizar los siguientes métodos:
- $ mensaje → adjuntar ('ruta / a / adjunto.txt');
- $ mensaje → incrustar ('ruta / al / archivo adjunto.jpg');
El correo se puede enviar como HTML o texto. Puede indicar el tipo de correo que desea enviar en el primer argumento pasando una matriz como se muestra a continuación. El tipo predeterminado es HTML. Si desea enviar correo de texto sin formato, utilice la siguiente sintaxis.
Sintaxis
Mail::send([‘text’=>’text.view’], $data, $callback);
En esta sintaxis, el primer argumento toma una matriz. Utilizartext como el nombre de clave de la vista como valor de la clave.
Ejemplo
Step 1 - Ahora le enviaremos un correo electrónico desde la cuenta de Gmail y para eso necesita configurar su cuenta de Gmail en el archivo de entorno de Laravel - .envarchivo. Habilite la verificación en dos pasos en su cuenta de Gmail y cree una contraseña específica para la aplicación y luego cambie los parámetros .env como se muestra a continuación.
.env
MAIL_DRIVER = smtp
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = your-gmail-username
MAIL_PASSWORD = your-application-specific-password
MAIL_ENCRYPTION = tls
Step 2 - Después de cambiar el .env file ejecute los dos comandos siguientes para borrar la caché y reiniciar el servidor Laravel.
php artisan config:cache
Step 3 - Crea un controlador llamado MailController ejecutando el siguiente comando.
php artisan make:controller MailController --plain
Step 4 - Después de una ejecución exitosa, recibirá el siguiente resultado:
Step 5 - Copie el siguiente código en
app/Http/Controllers/MailController.php archivo.
app/Http/Controllers/MailController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
use App\Http\Requests;
use App\Http\Controllers\Controller;
class MailController extends Controller {
public function basic_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send(['text'=>'mail'], $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject
('Laravel Basic Testing Mail');
$message->from('[email protected]','Virat Gandhi');
});
echo "Basic Email Sent. Check your inbox.";
}
public function html_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send('mail', $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject
('Laravel HTML Testing Mail');
$message->from('[email protected]','Virat Gandhi');
});
echo "HTML Email Sent. Check your inbox.";
}
public function attachment_email() {
$data = array('name'=>"Virat Gandhi");
Mail::send('mail', $data, function($message) {
$message->to('[email protected]', 'Tutorials Point')->subject
('Laravel Testing Mail with Attachment');
$message->attach('C:\laravel-master\laravel\public\uploads\image.png');
$message->attach('C:\laravel-master\laravel\public\uploads\test.txt');
$message->from('[email protected]','Virat Gandhi');
});
echo "Email Sent with attachment. Check your inbox.";
}
}
Step 6 - Copie el siguiente código en resources/views/mail.blade.php archivo.
resources/views/mail.blade.php
<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>
Step 7 - Agregue las siguientes líneas en app/Http/routes.php.
app/Http/routes.php
Route::get('sendbasicemail','[email protected]_email');
Route::get('sendhtmlemail','[email protected]_email');
Route::get('sendattachmentemail','[email protected]_email');
Step 8 - Visite la siguiente URL para probar el correo electrónico básico.
http://localhost:8000/sendbasicemail
Step 9- La pantalla de salida se verá así. Revise su bandeja de entrada para ver la salida de correo electrónico básica.
Step 10 - Visite la siguiente URL para probar el correo electrónico HTML.
http://localhost:8000/sendhtmlemail
Step 11- La pantalla de salida se verá así. Revise su bandeja de entrada para ver la salida del correo electrónico html.
Step 12 - Visite la siguiente URL para probar el correo electrónico HTML con archivo adjunto.
http://localhost:8000/sendattachmentemail
Step 13 - Puedes ver la siguiente salida
Note - En el MailController.phpfile la dirección de correo electrónico en el método from debe ser la dirección de correo electrónico desde la cual puede enviar la dirección de correo electrónico. Generalmente, debe ser la dirección de correo electrónico configurada en su servidor.