Estoy tratando de enviar correo en el proyecto Laravel 5.4 con Mailgun. Creo que puse la configuración correctamente. Pero, recibí este mensaje de error como
ClientException en RequestException.php línea 111: Error del cliente:
POST https://api.mailgun.net/v3/sandboxfeb88d58f18841738b2fc81d7cbc7631.mailgun.org/messages.mime> resultó en una respuesta401 UNAUTHORIZED: Prohibido
Aquí está mi configuración:
en archivo .env
MAIL_DRIVER=mailgun MAILGUN_DOMAIN=sandboxfeb88d58f18841738b2fc81d7cbc7631.mailgun.org MAILGUN_SECRET=pubkey-1767e**********en el archivo mail.php
'driver' => env('MAIL_DRIVER', 'smtp'), 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'from' => [ 'address' => env('MAIL_FROM_ADDRESS', 'richi.htoo@gmail.com'), 'name' => env('MAIL_FROM_NAME', 'Richi Htoo'), ],en el archivo services.php
'mailgun' => [ 'domain' => env('MAILGUN_DOMAIN'), 'secret' => env('MAILGUN_SECRET'), ],y escribí el código de envío de correo en la ruta predeterminada, como
Route::get('/', function () { //return view('welcome'); $data = [ 'title' => 'Hi student I hope you like the course', 'content' => 'This laravel course was created with a lot of love and dedication for you' ]; Mail::send('emails.test', $data, function($message){ $message->to('white.nuzzle@gmail.com', 'White Nuzzle')->subject('Hello student how are you?'); }); });Y también instalé Laravel Package "guzzlehttp/guzzle" versión 6.2 para enviar correo.
Pero cuando llamo a esa ruta de inicio predeterminada, recibo un mensaje de error como mencioné anteriormente.
No puedo encontrar ninguna solución para mi error en ningún lugar, incluido este foro "stackoverflow.com".
¿Alguien puede ayudarme por favor?
Ok, lo encontré, en el archivo "vendor\laravel\framework\src\Illuminate\Mail\Transport\MailgunTransport.php", el punto final utilizado es el de EE. UU.
Como se dice en la documentación, https://documentation.mailgun.com/en/latest/api-intro.html#mailgun-regions , tiene un punto final para EE. UU. y la UE.
Si eres europeo, debes usar "api.eu.mailgun.net" o obtienes un 401.
Simplemente cambie el punto final: Laravel es poderoso y piensan en eso. Puede agregar una clave de 'punto final' a la entrada config/services.php/mailgun.
Francamente, fue todo un calvario, hice que la caja de arena funcionara de la siguiente manera
MAILGUN_DOMAIN y MAILGUN_SECRET también, ya que services.php los usa. Recuerde que MAILGUN_SECRET es la clave privada y comienza con key- , no use la clave pública aquíMAIL_DRIVER=mailgun MAIL_HOST=smtp.mailgun.org MAIL_PORT=587 MAIL_USERNAME=postmaster@sandboxcc*****************.mailgun.org MAIL_PASSWORD=****************** MAIL_ENCRYPTION=tlsSi no está utilizando la región Mailgun de Estados Unidos, puede definir el punto final de su región en el archivo de configuración de servicios:
'mailgun' => [ 'domain' => env('MAILGUN_DOMAIN'), 'secret' => env('MAILGUN_SECRET'), 'endpoint' => env('MAILGUN_ENDPOINT', 'api.eu.mailgun.net'), ],Alternativamente, se puede definir MAILGUN_ENDPOINT en el archivo .env:
MAILGUN_ENDPOINT="api.eu.mailgun.net"