
Como enviar email en laravel 9

Ing. Luis Moreno
Senior Full-Stack Developer.
laravel tiene una forma de envio muy comoda que permite una exelente manipulacion y control de los correos que se quieran enviar y aqui te mostrare como debes configurar tu laravel 9 para que puedas enviarlos
Asumiendo que ya tienes un laravel 9 instalado y activo, partire de este punto, de no tener laravel instalado te invito a que vallas a mi otro articulo para que hagas ese proceso y puedes reanudar dsde este punto.
Configurar SMTP en ambiente de desarrollo con Mailtrap
Si estas trabajando en ambiente de desarrollo y nesesitas configurar el envio de correo lo ideal es que prepares un entorno de desarrollo que permita hacer tus pruebas sin molestar tus clientes o amigos con correos basura y lo mejor en estos escenarios es usar Mailtrap; esta herramienta ademas de ser muy facil de usar es muy comoda para este tipo de actividades, siendo la mas usada por desarrolladores en modo desarrollo y aca te explicare como debes configurarla
Pasos para configurar Mailtrap
- Creas una cuenta en mailtrap, o si ya tienes te logueas
- creas tu bandeja de entrada
- vas a configuracion y luego precionas en ver credenciales
Configuracion de mailtrap en laravel
Nesesitamos tener nuestro archivo .env y nuestro panel de credenciales abiertos para proceder a configurar el laravel:
-
vas a ir a la raiz de tu proyecto en laravel y vas abrir tu archivo .env y vas a colocar tus datos de acceso proporcionados por mailtrap
MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=d295bff12021 MAIL_PASSWORD=11b1aea9valores MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=administracion@moreno.website MAIL_FROM_NAME="${APP_NAME}"
-
Debes abrir tus credenciales de mailtrap e ir asignandoselo a tu archivos de configuracion .env de laravel 9
Enviar emails tomando datos de una Base de Datos en Laravel 9
debemos crear nuestro modelo, controlador y migraciones para poder preparar el entorno y los metodos a usar para consultar base de datos
Crear modelo y migracion en laravel 9
en nuestra linea de comandos ingresamos el siguiente comando de artisan
php artisan make:model cotizacion -m
Crear campos de base de datos en database/migrations
Los campos lo configuraremos como string , pero hay mas tipos de datos el cual se pueden usar; y que puedes elegir a gusto cual nesesitas:
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateCotizacionsTable extends Migration
{
public function up()
{
Schema::create('cotizacions', function (Blueprint $table) {
$table->id();
$table->string('correo');
$table->string('nombre')->nullable();;
$table->string('web')->nullable();;
$table->string('telefono')->nullable();;
$table->string('clacificacion')->nullable();;
$table->string('descripcion')->nullable();;
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('cotizacions');
}
}
Creación de tablas con el sistema de migraciones de laravel 9
php artisan migrate
Configuramos nuestro modelo
recuerda que debes tomar en cuenta protected $fillable para que al momento de guardar no te de error. debes indicar cuales son los campos que quieres que se guarden
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class cotizacion extends Model
{
use HasFactory;
protected $fillable =[
'correo',
'nombre',
'web',
'telefono',
'clacificacion',
'descripcion'
];
}
crear rutas y usar elocuent de laravel 9
vamos a ir directamente al archivo Routes/web.php y crearemos una ruta, en cual definiremos de la siguiente manera:
use Illuminate\Foundation\Application;
use Illuminate\Support\Facades\Route;
use App\Mail\suscriptormail;
use Illuminate\Support\Facades\Mail;
use App\Models\cotizacion;
Route::get('administracion/suscriptores/corrreos/enviar', function () {
$suscriptores = cotizacion::latest()->get();
foreach ($suscriptores as $key ) {
$mailable = new suscriptormail($key);
Mail::to($key->correo)->send($mailable);
}
return "correo enviado con exito";
});
es importante que incluyas, asi como esta arriba para que pueda funcionar:
use App\Mail\suscriptormail;
use Illuminate\Support\Facades\Mail;
use App\Models\cotizacion;
Creación y uso de controlador de email
una vez ingreses este comando con el nombre que quieras, se te crea una carpeta llamada app/Mail donde se creara a su vez un archivo que en mi caso se llama suscriptormail y que debemos configurar
php artisan make:mail suscriptormail
En este punto el templante navidad y su carpeta no existen , pero se crearan en el siguiente paso asi que ten en cuenta ese detalle por si quieres coloar otro nombre puedas considerar esto cuando empesemos con este punto.
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class suscriptormail extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($key)
{
$this->key = $key;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$this->view('mails.navidad')->with([
'key' => $this->key
]);
}
}
creación de templante con HTML personalizado
usando el motor de plantillas blade de laravel podemos personalizar y construir un lindo templante usando los datos que nos proporciona nuestro controlador y el resultado lo podemos ver aqui:
ejemplo de html personalizado en nuestro mail:
Hola {{ $key->nombre }}, Si tu web: {{$key->web }}, tiene un problema, puedes seguir contando con mi apoyo
una vez configurado todo queda probar como funciona
php artisan serve
Copiamos nuestro link que genera en terminal y lo ejecutamos en nuestro navegador

Hay muchas cosas por mejorar pero el correo se manda y el ejemplo te puede servir si quieres aprender a como enviar un correo con laravel 9 y pasandole parametros de base de datos

si reviso mi mailtrap podras notar que ya me llego el correo y eso significa que todo quedo correctamente configurado y listo para pasar a produccion :). te recomiendo que te descargues una plantilla bonita y ya le pasas valores de base de datos
guarde unos datos en base de datoas para hacer pruebas

fijate que son los mismos, lo cual significa que la plantilla se esta rellenando de base de datos y todo quedo correctamente
