web-dev-qa-db-fra.com

Réponse attendue code 220 mais code obtenu "" avec message ""

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']);
    });
  }
8
user968270

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

4
Uğur Arıcı

Problème similaire 587 port

MAIL_DRIVER=smtp
MAIL_Host=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=mypassword
1
Takamura

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', ''),

0
Pyuri Sahu
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 

  1. composer dump-autoload

  2. php artisan serve

0
sparsh turkane