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'),
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:
mail.php
se trouve à /app/config/mail.php
(comme l’a dit OP). .env
se trouve à la racine de votre projet. 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
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.
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.
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!');
...