J'essaie d'envoyer un courrier électronique à un utilisateur spécifié en tapant l'URL, mais le message d'erreur suivant s'affiche:
Swift_TransportException dans la ligne AbstractSmtpTransport.php 383: Réponse attendue, code 250 mais code "530", avec le message "530 5.7.1 Authentification requise
Jusqu'à présent, j'essaie simplement de le faire fonctionner avec Gmail. Comment puis-je obtenir que cela fonctionne?
C'est ce que j'ai jusqu'ici: mail.php
<?php
return [
'driver' => env('MAIL_DRIVER',' smtp'),
'Host' => env('MAIL_Host', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' =>"[email protected]" , 'name' => "example"],
'encryption' => 'tls',
'username' => env('[email protected]'),
'password' => env('MyPassword'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
Voici ce que j'ai dans les itinéraires:
Route::get('test', function() {
Mail::send('Email.test', [], function ($message) {
$message->to('[email protected]', 'HisName')->subject('Welcome!');
});
});
Voici 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 voici ce qui se trouve dans mon fichier .env:
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword
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 fichier .env 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
[email protected]
MAIL_PASSWORD=MyPassword
dans le fichier .env sont exacts.
NOTE: N'oubliez pas de redémarrer votre serveur après avoir édité le fichier .env pour qu'il sélectionne les nouvelles données que vous y avez entrées.
Si vous ne redémarrez pas votre serveur, le fichier .env continuera à présenter les anciennes données de messagerie à l'application, même si vous avez apporté des modifications pouvant entraîner cette erreur.
Ma configuration de fichier .env est comme ça pour laravel 5.1
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls
la chose la plus importante ici 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 puisque aucune chance pour n'importe quelle configuration. C'est-à-dire que chaque fois que j'ai changé, le fichier .env doit exécuter cette commande
php artisan config:cache
Et ceci est très 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 comprendre.
Vous obtenez une erreur d'authentification car le nom d'utilisateur et le mot de passe de votre fichier de configuration sont mal configurés.
Change ça:
'username' => env('[email protected]'),
'password' => env('MyPassword'),
Pour ça:
'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
.
Un conseil de dépannage: ajoutez dd(Config::get('mail'));
pour que vous puissiez voir le réel généré config . Cela vous aidera à déceler des problèmes de ce type et à savoir exactement quelles informations Laravel va essayer d'utiliser. Donc, vous voudrez peut-être arrêter temporairement cela dans votre itinéraire de test pour examiner ce que vous avez:
Route::get('test', function()
{
dd(Config::get('mail'));
});
le problème sera résolu en effaçant le cache
php artisan config:cache
À des fins de développement https://mailtrap.io/ vous fournit tous les paramètres à ajouter au 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 dans le fichier .env à partir du courrier (comme gmail et tous)
Après l’ajout, assurez-vous de redémarrer le serveur
Enfin j'ai eu! Juste pour partager, il y a plus de config que de simples .env
C'est .env
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
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' => '[email protected]' , 'name' => 'YourName' ],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
Si vous rencontrez le même problème et que vous essayez tout en ligne et que cela ne fonctionne pas, c'est probablement le fichier de cache de configuration qui envoie les informations erronées. Vous pouvez le trouver dans bootstrap/cache/config.php. Assurez-vous que les informations d'identification sont bien là. Cela m'a pris une semaine pour comprendre cela. J'espère que cela aidera quelqu'un un jour.
Cela m'arrive aussi.
C’est parce que lorsque nous modifions le fichier
.env
, nous devons redémarrer le serveur. Arrêtez simplement lephp artisan serve
actuel et redémarrez-le. Cela fonctionnera à coup sûr.
Si cela ne fonctionne toujours pas, essayez de faire php artisan config:cache
Pour toute référence future aux personnes qui viennent ici. après avoir exécuté la commande 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 le rajouter manuellement à la liste de vos fournisseurs, sous le fichier app.php. GO-TO: app->config->app.php->'providers[]'
et ajoutez-le, comme suit:
Illuminate\View\ViewServiceProvider::class,
J'espère que ça aide quelqu'un.
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 auquel votre serveur peut accéder.
Aucune des solutions ci-dessus n'a fonctionné pour moi sur localhost. J'ai même autorisé l'accès depuis des applications moins sécurisées, l'accès autorisé via l'affichage, déverrouiller captcha et paramétrer l'homologue de vérification et le nom d'homologue sur false pour SSL.
Finalement, j'ai utilisé la solution de test SMTP open source de MailHog. Les étapes sont les suivantes:
MAIL_DRIVER = smtp
MAIL_Host = 127.0.0.1
MAIL_PORT = 1025
MAIL_USERNAME = testuser
MAIL_PASSWORD = testpwd
MAIL_ENCRYPTION = null
j'ai eu le même problème; mon 'MAIL_ENCRYPTION' était 'tls' sur mail.php mais il était 'nul' sur un fichier .env alors j'ai remplacé 'null' par 'tls' et cela a fonctionné!
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
Cela devrait fonctionner.
Si vos résultats de dd(Config::get('mail'));
sont nuls, utilisez simplement la commande
php artisan config:clear