Cómo enviar email en laravel 9

Cómo enviar email en laravel 9

luilliWeb

Ing. Luis Moreno

Senior Full-Stack Developer.

laravel tiene una forma de envio muy comoda Qué permite una excelente manipulacion y control de los correos Qué se quieran enviar y aqui te mostrare Cómo debes configurar tu laravel 9 para Qué puedas enviarlos

Asumiendo Qué ya tienes un laravel 9 instalado y activo, partire de este punto, de no tener laravel instalado te invito a Qué vallas a mi otro articulo para Qué 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 Qué prepares un entorno de desarrollo Qué permita hacer tus pruebas sin molestar tus clientes o amigos con correos basura y lo mejor en estos escenarios es usar Mailtrap; esta herramienta además de ser muy facil de usar es muy comoda para este tipo de actividades, siendo la más usada por desarrolladores en modo desarrollo y aca te explicare Cómo 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 Cómo string , pero hay más tipos de datos el Cuál se pueden usar; y Qué puedes elegir a gusto Cuál 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 Qué debes tomar en cuenta protected $fillable para Qué al momento de guardar no te de error. debes indicar Cuáles son los campos Qué quieres Qué 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 Cuál 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 Qué incluyas, asi Cómo esta arriba para Qué 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 Qué quieras, se te crea una carpeta llamada app/Mail Dónde se creara a su vez un archivo Qué en mi caso se llama suscriptormail y Qué 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 Qué ten en cuenta ese detalle por si quieres coloar otro nombre puedas considerar esto Cuándo 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 Qué 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 Cómo funciona

          

            php artisan serve


         
        

Copiamos nuestro link Qué 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 Cómo enviar un correo con laravel 9 y pasandole parametros de base de datos

si reviso mi mailtrap podras notar Qué ya me llego el correo y eso significa Qué todo quedo correctamente configurado y listo para pasar a produccion :). te recomiendo Qué 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 Qué son los mismos, lo Cuál significa Qué la plantilla se esta rellenando de base de datos y todo quedo correctamente




Comentar

Cargando...

Por favor espera, estamos procesando tu solicitud...

¡Enviado con éxito!

Gracias por enviar tu solicitud. Te contactaremos pronto.