Essayer D'obtenir Laravel 5 email au travail
J'essaie d'envoyer un e-mail à un utilisateur spécifié en tapant l'URL, mais j'obtiens l'erreur suivante:
Swift_TransportException dans AbstractSmtpTransport.php ligne 383: Code de réponse attendu 250 mais code obtenu "530" , avec le message " 530 5.7.1 Authentification requise
Jusqu'à présent, j'essaie juste de le faire fonctionner avec Gmail. Comment puis-je obtenir que cela fonctionne?
C'est Ce que j'ai jusqu'à présent: messagerie.php
<?php
return [
'driver' => env('MAIL_DRIVER',' smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' =>"MyUsername@gmail.com" , 'name' => "example"],
'encryption' => 'tls',
'username' => env('MyUsername@gmail.com'),
'password' => env('MyPassword'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
C'est ce que j'ai dans les routes:
Route::get('test', function() {
Mail::send('Email.test', [], function ($message) {
$message->to('example@gmail.com', 'HisName')->subject('Welcome!');
});
});
C'est ce que j'ai dans mon contrôleur:
class MailController extends Controller
{
public function Sending_Email()
{
$this->call('GET','Email.test');
return View('Email.test');
}
}
Et c'est ce qui est dans mon .fichier env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword
17 réponses
Je sais que cela fonctionne pour vous maintenant @Vantheman6 mais c'est ce qui a fonctionné pour moi au cas où c'est la même chose pour quelqu'un d'autre.
J'ai ajouté à mon .env fichier les détails du service de messagerie que j'utilise. Alors assurez-vous que les détails suivants
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword
Dans le .fichier env sont précis.
REMARQUE: N'oubliez pas de redémarrer votre serveur après avoir modifié le .fichier env afin qu'il choisisse les nouvelles données que vous mettez là-bas.
Si vous ne redémarrez pas votre serveur, le .env fichier sera toujours continuez à présenter les anciennes données de messagerie à l'application même si vous avez apporté des modifications qui peuvent causer cette erreur.
Mon .la configuration du fichier env est comme ceci pour laravel 5.1
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@gmail.com
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls
Ici la chose la plus importante est que j'ai créé un mot de passe spécifique à l'application gmail (16 chiffres).
J'ai besoin de révéler une chose de plus car pas de chance pour toute configuration. C'est-à-dire, chaque fois que je changeais .env fichier besoin d'exécuter cette commande
php artisan config:cache
Et c'est le plus important car sans cette commande, laravel exécute les paramètres précédents à partir de son cache. Il m'a fallu plus de 10 heures pour la figure de sortir.
Vous obtenez une erreur d'authentification car le nom d'utilisateur et le mot de passe dans votre fichier de configuration sont mal configurés.
Changez ceci:
'username' => env('MyUsername@gmail.com'),
'password' => env('MyPassword'),
À ceci:
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
La méthode env
vérifie votre .fichier env. Dans votre .fichier env vous appelez ces MAIL_USERNAME
, c'est donc ce que vous devez passer à la méthode env
.
Une astuce de dépannage: ajoutez dd(Config::get('mail'));
afin que vous puissiez voir la configuration générée réelle. Cela vous aidera à repérer des problèmes comme celui-ci, et de savoir exactement ce que informations Laravel va essayer d'utiliser. Donc, vous pouvez arrêter cela dans votre itinéraire de test temporairement pour examiner ce que vous avez:
Route::get('test', function()
{
dd(Config::get('mail'));
});
À des fins de développement https://mailtrap.io/ vous fournit tous les paramètres qui doivent être ajoutés .fichier env. Par exemple:
Host: mailtrap.io
Port: 25 or 465 or 2525
Username: cb1d1475bc6cce
Password: 7a330479c15f99
Auth: PLAIN, LOGIN and CRAM-MD5
TLS: Optional
Sinon, à des fins d'implémentation, vous pouvez obtenir les informations d'identification smtp à ajouter .fichier env à partir du courrier (comme gmail n all)
Après addition assurez-vous de redémarrer le serveur
Le problème sera résolu en effaçant le cache
php artisan config:cache
Si jamais vous avez le même problème et essayez tout en ligne et que cela ne fonctionne pas, c'est probablement le fichier de cache de configuration qui envoie les mauvaises informations. Vous pouvez le trouver dans bootstrap / cache / config.php. Assurez-vous que les informations d'identification sont là. Il m'a fallu une semaine pour comprendre cela. J'espère que cela aidera quelqu'un un jour.
Enfin j'ai eu! Juste pour partager, il y a plus de configuration que juste .env
C'est ça .env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=UserName@gmail.com
MAIL_PASSWORD=********
MAIL_ENCRYPTION=tls
Config / mail.php doit également entrer l'adresse et le nom pour que cela fonctionne.
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => 'Username@gmail.com' , 'name' => 'YourName' ],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
Ça m'arrive aussi.
C'est parce que lorsque nous éditons le fichier
.env
, nous devons redémarrer le serveur. Arrêtez simplement le courantphp artisan serve
et redémarrez-le. Cela fonctionnera à coup sûr.
Si toujours pas travaillé essayer de faire php artisan config:cache
Pour référence future aux personnes qui viennent ici. après avoir exécuté la commande qui a été donnée dans la troisième réponse ici(j'utilise maintenant Laravel 5.3).
php artisan config:cache
, Vous pouvez rencontrer ce problème:
[ReflectionException]
Class view does not exist
Dans ce cas, vous devez l'ajouter manuellement à votre liste fournisseur en vertu de l'application.fichier php. GO-TO: {[3] } et ajoutez - le, comme ceci:
Illuminate\View\ViewServiceProvider::class,
J'espère que ça aide quelqu'un.
J'ai eu le même problème; mon 'MAIL_ENCRYPTION' était ' tls ' sur le courrier.php mais c'était 'null' Sur .fichier env j'ai donc changé 'null' En ' tls ' et cela a fonctionné!
Cela signifie simplement que votre serveur n'a pas accès au serveur SMTP.
Vous pouvez tester cela en faisant
telnet <smtpServer> <smtpPort>
Vous devriez obtenir L'erreur Accès refusé.
La solution consiste simplement à utiliser un autre serveur SMTP accessible par votre serveur.
Aucune des solutions ci-dessus n'a fonctionné pour moi sur localhost. J'ai même autorisé l'accès à partir d'applications moins sécurisées, autorisé l'accès via display unlock captcha et défini le verify peer et verify peer name sur false pour SSL.
Finalement, j'ai utilisé la solution de test SMTP open source de MailHog. Les étapes sont les suivantes:
- Télécharger la dernière version de MailHog pour votre système d'exploitation
- Spécifiez les paramètres suivants dans votre .fichier env
MAIL_DRIVER = smtp
MAIL_HOST=127.0.0.1
MAIL_PORT = 1025
MAIL_USERNAME=testuser
MAIL_PASSWORD=testpwd
MAIL_ENCRYPTION = null
MAIL_FROM_ADDRESS=theaddress@youwant.com
- exécutez le fichier téléchargé De MailHog
- Envoyer Un Courriel
- Vérifiez l'email envoyé en allant à localhost: 8025
Si vos résultats de dd(Config::get('mail'));
Sont null, utilisez simplement la commande
php artisan config:clear
J'ai eu le même problème que toi, je viens de le faire fonctionner.
Tout d'Abord, vous devez vérifier que le .les paramètres env sont configurés correctement. Voici mes paramètres:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=yourusername
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=tls
Assurez-vous que votre mot de passe n'est pas entre guillemets :).
Et dans config / mail.php il a ce qui suit, sans les commentaires.
<?php
return [
'driver' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', '587'),
'from' => ['address' => 'yourusername', 'name' => 'yourname'],
'encryption' => env('MAIL_ENCRYPTION','tls'),
'username' => env('MAIL_USERNAME', 'username@gmail.com'),
'password' => env('MAIL_PASSWORD', 'password'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
Espère que cela fonctionne pour vous :)
J'ai le même problème. J'ai corrigé ces erreurs en redémarrant mon serveur web.
Vous devez redémarrer le serveur et exécuter les commandes suivantes:
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
php artisan config:cache
Ça devrait marcher.
- vous allez au Mailgun
- Cliquez Sur Destinataires Autorisés
- Ajoutez l'adresse e-mail à laquelle vous souhaitez envoyer un courrier.
- Vérifiez le message envoyé au courrier.
- Bravo!...Vous êtes bon pour aller.