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
119
demandé sur Advaith 2015-03-17 16:53:15

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.

192
répondu Osei-Bonsu Christian 2017-06-09 11:42:30

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.

37
répondu Amir 2015-07-02 19:26:13

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'));
});
26
répondu jszobody 2015-03-17 14:30:10

À 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

9
répondu Bhupesh Shrestha 2016-09-16 02:49:38

Le problème sera résolu en effaçant le cache

php artisan config:cache
9
répondu zainudin noori 2017-11-21 06:51:57

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.

8
répondu Nabil 2016-02-03 01:39:35

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,
8
répondu yaksowmin 2016-02-12 07:40:23

Ça m'arrive aussi.

C'est parce que lorsque nous éditons le fichier .env, nous devons redémarrer le serveur. Arrêtez simplement le courant php artisan serve et redémarrez-le. Cela fonctionnera à coup sûr.

Si toujours pas travaillé essayer de faire php artisan config:cache

6
répondu Advaith 2016-10-23 10:10:02

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.

4
répondu GabMic 2016-10-24 18:29:56

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é!

2
répondu mohaddese abbasi 2016-06-28 04:07:29

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.

2
répondu stidiovip 2016-11-13 23:17:00

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:

  1. Télécharger la dernière version de MailHog pour votre système d'exploitation
  2. 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

  1. exécutez le fichier téléchargé De MailHog
  2. Envoyer Un Courriel
  3. Vérifiez l'email envoyé en allant à localhost: 8025
2
répondu ZerosAndOnes 2017-08-31 09:58:07

Si vos résultats de dd(Config::get('mail')); Sont null, utilisez simplement la commande

php artisan config:clear
1
répondu Mo D Genesis 2018-06-16 05:44:44

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 :)

0
répondu Yazeed AlSaif 2015-10-09 12:08:04

J'ai le même problème. J'ai corrigé ces erreurs en redémarrant mon serveur web.

0
répondu M Danil Rafiqi 2018-06-14 03:11:18

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.

0
répondu Genius in trouble 2018-09-21 08:35:28
  1. vous allez au Mailgun
  2. Cliquez Sur Destinataires Autorisés
  3. Ajoutez l'adresse e-mail à laquelle vous souhaitez envoyer un courrier.
  4. Vérifiez le message envoyé au courrier.
  5. Bravo!...Vous êtes bon pour aller.
-1
répondu user7141795 2016-11-10 14:22:49