Enviar mails

Lo primero de todo en una cuenta de gmail (la que nos va a servir para enviar todos los emails) hay que activar acceso aplicaciones poco seguras:

https://support.google.com/accounts/answer/6010255?hl=es

Por ejemplo activamos cuentaparanenviar@gmail.com

Abrir una cuenta en mailgun.com y activarla (es gratis hasta 5 senders y hasta 10000 envios)

en mailgun.com ir a sending -> overview -> añadir una cuenta recipient que exita:

micuentapararecibir@gmail.com (activarla cuando te llegue el email a esa cuenta)

En mailgun.com ir a sending -> overview -> SMTP obtener los datos de configuración del SMTP

Dichos datos los copias a .env, por ejemplo:
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@sandboxa6dcXXXX9558ca51829f1c.mailgun.org
MAIL_PASSWORD=30d1584412b93427XXXXX93eaeea-915161b7-69e99bc0
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=cuentaparanenviar@gmail.com
MAIL_FROM_NAME="${APP_NAME}"

Siempre que se haga un cambio en .env es aconsejable:
php artisan config:cache

En config/service.php cambiar si lo estamos ejecutando desde cualquier país de la Unión Europea:
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
'endpoint' => env('MAILGUN_ENDPOINT', 'api.eu.mailgun.net'),
],

De esta manera ya internamente enviará cualquier correo desde esa cuenta (por ejemplo cuando le damos a resetear password y que nos envíen un nuevo link para researlo).

Si quisieramos por otro lado nosotros mandar un email personalizado entonces:
en routes/web.php:
use Illuminate\Support\Facades\Mail;
...
Route::get('/', function () {
    // return view('welcome');
    $datos = [
        "titulo"=>"Hola mundo 3",
        "contenido"=>"Esto es una prueba 3  "
    ];
    Mail::send("emails.prueba", $datos, function($mensaje) {
        $mensaje->from('cualquiercorreoqueexista@gmail.com', 'Learning Laravel 3');
        $mensaje->to('micuentapararecibir@gmail.com')->subject('Learning Laravel test email 3');
    });
});

Crear esa vista en views/emails/prueba.blade.php:
<h1>{{ $titulo }}</h1>
<p>{{ $contenido }}</p>

No hay comentarios:

Publicar un comentario