web-dev-qa-db-fra.com

Laravel Homestead Swift Impossible d'envoyer un message sans l'adresse de l'expéditeur

Je reçois cette erreur avec les paramètres de courrier électronique courants dans Laravel 5.1 Homestead lorsque je tente d'envoyer un courrier de réinitialisation de mot de passe. 

Swift_TransportException in AbstractSmtpTransport.php line 162:Cannot send message without a sender address

L'adresse est renseignée dans app/config/mail.php: 

'from' => array('address' => '[email protected]', 'name' => 'hawle'),
19
Gergely Havlicsek

Dans votre fichier .env, vous devrez définir l'adresse électronique et le mot de passe de votre compte de messagerie. Vous devez également définir l'hôte et le port du serveur de messagerie que vous utilisez.

MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=25
MAIL_USERNAME= ***USER NAME***
MAIL_PASSWORD= ***PASSWORD***
MAIL_ENCRYPTION=tls

Ou assurez-vous que tout est complet dans votre fichier mail.php (voir la remarque ci-dessous). 

'Host' => env('MAIL_Host', 'smtp.gmail.com'),
/*
|--------------------------------------------------------------------------
| SMTP Host Port
|--------------------------------------------------------------------------
|
| This is the SMTP port used by your application to deliver e-mails to
| users of the application. Like the Host we have set this value to
| stay compatible with the Mailgun e-mail application by default.
|
*/
'port' => env('MAIL_PORT', 25),
/*
|--------------------------------------------------------------------------
| Global "From" Address
|--------------------------------------------------------------------------
|
| You may wish for all e-mails sent by your application to be sent from
| the same address. Here, you may specify a name and address that is
| used globally for all e-mails that are sent by your application.
|
*/
'from' => ['address' => '[email protected]', 'name' => 'hawle'],
/*
|--------------------------------------------------------------------------
| E-Mail Encryption Protocol
|--------------------------------------------------------------------------
|
| Here you may specify the encryption protocol that should be used when
| the application send e-mail messages. A sensible default using the
| transport layer security protocol should provide great security.
|
*/
'encryption' => env('MAIL_ENCRYPTION', 'tls'),

Remarque: Il est préférable d'utiliser le fichier .env car vous aurez probablement une configuration différente dans votre environnement de production.

Si tout est terminé et que cela ne fonctionne toujours pas, c'est peut-être la mise en cache. Vous pouvez vider le cache de configuration avec ceci:

php artisan config:cache

Notez aussi: 

  • Le port 465 est destiné à Gmail. Si cela ne fonctionne pas, vous pouvez utiliser 25. 
  • Le fichier mail.php se trouve à /app/config/mail.php (comme l’a dit OP). 
  • Le fichier .env se trouve à la racine de votre projet. 
  • Mailtrap.io est un service de test SMTP. Il n'envoie pas vraiment de courriels. 

Comme Viktorminator l'a mentionné:Tenez compte de la création de mots de passe pour les applications sans utiliser votre passe habituel pour ces besoins. Lien pour la création de mots de passe myaccount.google.com/apppasswords 

36
Szenis

Assurez-vous que vous avez défini le 'depuis' dans app/config/mail.php

'from' => ['address' => '[email protected]', 'name' => 'myname']

Cela résoudra le problème.

15
Ali

Si vous n'avez pas accès au fichier .env, vous pouvez ajouter des valeurs par défaut à ces appels env sur app/config/mail.php, comme suit:

    'from' =>  ['address' => env('MAIL_FROM_EMAIL','[email protected]'), 'name' => env('MAIL_FROM_NAME','SpongeBob')],

Cette approche essaiera d'obtenir les données du fichier .env. S'il n'y a rien, cela utilisera par défaut ce que vous avez défini.

2
Cristian Cordeiro

l'erreur était toujours survenue. après les réglages et les commandes d'exécution

php artisan view:clear;
php artisan config:cache;
php artisan cache:clear;
php artisan route:cache;

vérifier le code

\Illuminate\Support\Facades\Mail::send('layouts.mail', [ 'content' => 'testmail'],    function ($m) use ($msg2){
$m->from('[email protected]', 'ABC'); 
// this line was env('MAIL_FROM_ADDRESS') ; cant read from .env
$m->to('[email protected]', 'XYZ')->subject('TestMailSubject!');
...
0
felisleo119