Chaque fois que je soumets le formulaire de contact sur mon application Laravel, je reçois le message d'erreur dans le titre. J'ai suivi la recommandation de cette discussion , mais cela n'a eu aucun effet, même après php artisan cache:clear
et php artisan config:cache
. Voici le code pertinent:
.env
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl
config/mail.php
<?php
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'Host' => env('MAIL_Host', 'smtp.gmail.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', '[email protected]'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
];
La documentation me laissait l’impression que le «de» global ne se déclencherait que si aucune autre adresse de fournisseur n’était fournie, mais dans mon contrôleur pour le courrier, j’ai spécifié l’adresse fournie dans le formulaire de contact sous la forme «de», qu'un point de conflit en quelque sorte? Cela ne semble pas provenir des détails du message d'erreur.
Parce que le formulaire de contact n'est pas une vue distincte mais le bas de la vue principale, la fonction de contrôleur vit dans PageController
public function postContact(Request $request) {
$this->validate($request, [
'email' => 'required|email',
'subject' => 'required|min:3',
'message' => 'required|min:10'
]);
$data = array(
'email' => $request->email,
'subject' => $request->subject,
'mailbody' => $request->message
);
Mail::send('emails.contact', $data, function($message) use ($data) {
$message->from($data['email']);
$message->to('[email protected]');
$message->subject($data['subject']);
});
}
Je pense que vous devriez définir l'expéditeur du courrier (MAIL_FROM_ADDRESS
) comme votre compte gmail avec lequel vous souhaitez utiliser l'envoi d'e-mails.
par exemple, si votre MAIL_USERNAME
à .env
est [email protected] , vous devez définir votre MAIL_FROM_ADDRESS
(ou bien sûr $mail->from()
) comme [email protected] .
Je ne pense pas que Gmail vous permette d'envoyer des emails en tant qu'utilisateur différent (une autre adresse).
Problème similaire 587 port
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=mypassword
J'avais la même erreur .. Cela fonctionne bien quand j'ai changé EMAIL_ENCRYPTIONIl était 'encryption' => env('MAIL_ENCRYPTION', 'tps'),
avant Je le change en 'encryption' => env('MAIL_ENCRYPTION', ''),
MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=465
[email protected]
MAIL_PASSWORD=secreat
MAIL_ENCRYPTION=ssl
Mettez à jour le code ci-dessus dans votre fichier .env, puis exécutez ces commandes dans le terminal
composer dump-autoload
php artisan serve