Bonjour, j’ai simplement essayé d’envoyer un courrier électronique à Laravel, j’ai lu la documentation et cela a semblé si facile, mais chaque fois que j’essaie, j’obtiens erreur après erreur, j’ai essayé à sendgrid de ne pas fonctionner et maintenant j’essaie d’utiliser mailgun mais j'ai des problèmes avec elle aussi.
C'est mon code ::
$data = array();
Mail::send('emails.auth.activate', $data, function($message)
{
$message->to('[email protected]', 'John Doe')->subject('This is a demo!');
});
C'est l'erreur que j'obtiens:
GuzzleHttp \ Exception \ ClientException (400)
Client error response [url] https://api.mailgun.net/v2/mail.xxxxxxx.com/messages.mime [status code] 400 [reason phrase] BAD REQUEST
Mail Config:
<?php
return array(
/*
|--------------------------------------------------------------------------
| Mail Driver
|--------------------------------------------------------------------------
|
| Laravel supports both SMTP and PHP's "mail" function as drivers for the
| sending of e-mail. You may specify which one you're using throughout
| your application here. By default, Laravel is setup for SMTP mail.
|
| Supported: "smtp", "mail", "sendmail", "mailgun", "mandrill", "log"
|
*/
'driver' => 'mailgun',
'Host' => 'sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org',
'port' => 587,
'from' => array('address' => '[email protected]', 'name' => 'Xxxxxxxx'),
'encryption' => 'tls',
'username' => '[email protected]',
'password' => 'xxxxxxxxxxx',
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => true,
);
Suivez ces étapes
"guzzlehttp/guzzle": "~4.0"
ligne à l'intérieur de composer.json
composer update
sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org
et la clé API créée comme key-65c33f1xxxxxxxxxxxxxxxxxxxx
.Aller au fichier config/services.php
et remplacer
'mailgun' => array(
'domain' => '',
'secret' => '',
),
avec
'mailgun' => array(
'domain' => 'sandboxXXXXXXXXXXXXXXXXXXXXXXXXXXXX.mailgun.org',
'secret' => 'key-65c33f1xxxxxxxxxxxxxxxxxxxx',
),
Si vous voulez créer votre propre sous-domaine, vous pouvez créer et attribuer au domaine (au lieu de cela)
Configurez config/mail.php
comme ceci
'driver' => 'mailgun',
'Host' => 'smtp.mailgun.org',
'port' => 587,
'from' => array('address' => '[email protected]', 'name' => 'Xxxxxxxx'),
'encryption' => 'tls',
'username' => null,
'password' => null,
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false
Notez qu'il n'est pas nécessaire de fournir un nom d'utilisateur et un mot de passe pour cela. Mailgun se chargera de cela.
Essayez d'envoyer un email maintenant. J'espère que cela t'aides. Bonne chance!
Je voulais juste ajouter une raison possible de l'erreur. J'ai reçu cette erreur en utilisant le mode bac à sable alors que je n'avais pas encore défini le destinataire autorisé. Lorsque je me suis connecté à Mailgun et que j'ai ajouté le destinataire souhaité à la liste "Destinataire autorisé", l'erreur a disparu.
J'ai le même problème et je reçois toujours l'erreur suivante: Réponse d'erreur du client [url] https://api.mailgun.net/v3//messages.mime 404 non trouvé
Il n'y a pas beaucoup d'écriture sur cette erreur écrite en ligne pour Laravel 5.1 que j'utilise. Il s'avère que dans config-> services, l'installation par défaut de Laravel 5.1 est fournie avec:
'domain' => env('');
'secret' => env('');
pour une raison quelconque, si vous gardez votre domaine et votre secret enveloppés dans env comme lors de l'installation par défaut, MailGunTransport ne le récupère pas. Il suffit donc de le définir comme suit:
domain' =>'yourdomain';
'secret' => 'yoursecret';
J'espère que cela aidera puisque je suis sûr que je ne suis pas le seul à avoir probablement rencontré ce problème.
J'ai également bloqué une fois la configuration de Mailgun dans Laravel 5.1 et ce qui a fonctionné pour moi est le processus suivant. J'espère que ça aide quelqu'un:
1) Installez le paquetage en ajoutant "guzzlehttp/guzzle": "5.0" à l'intérieur de composer.json comme ceci:
"require": {
"guzzlehttp/guzzle": "~5.0"
},
2) Mettez à jour le compositeur en utilisant Sudo composer update
dans le terminal.
3) Redémarrez Apache.
4) Créez le compte dans http://www.mailgun.com . Cela va créer un Sub Domain
et un API Key
.
5) Ajoutez le Sub Domain
et le API Key
dans le .env
comme ceci:
MAILGUN_DOMAIN=sandbox8...........3b.mailgun.org
MAILGUN_SECRET=key-9..................04
6) Et dans le fichier services.php, ajoutez la ligne suivante:
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
7) Maintenant, le mail.php comme suit:
'driver' => 'mailgun',
'Host' => 'smtp.mailgun.org',
'port' => 587,
'from' => ['address' => null, 'name' => null],
'encryption' => 'tls',
'username' => null,
'password' => null,
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
J'espère que cela fonctionne pour vous tous.
J'ai eu ce problème car je n'avais pas activé mon compte mailgun. Une fois activé, tout fonctionnait bien
Vous pourrez envoyer des messages aux personnes du même domaine, sauf si vous les avez ajoutés à la catégorie de destinataires autorisés. Si vous ajoutez quelqu'un à la catégorie de destinataires autorisés, il devra approuver la demande, puis seulement serait capable de recevoir les emails.