it-roy-ru.com

Ожидаемый код ответа 220, но получил код "" с сообщением ""

Каждый раз, когда я отправляю контактную форму в своем заявлении Laravel, я получаю сообщение об ошибке в заголовке. Я следовал рекомендации в этом обсуждении , но она не дала эффекта даже после php artisan cache:clear и php artisan config:cache. Вот соответствующий код:

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

];

Из документации у меня сложилось впечатление, что глобальное «из» не сработает, если не будет указан другой адрес от, но в моем контроллере для почты я указал адрес, указанный в контактной форме, в качестве «от»: что за точка конфликта как-то? Это, кажется, не из деталей сообщения об ошибке.

Поскольку форма контакта не является отдельным представлением, а является нижней частью представления главной страницы, функция Controller находится в 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

Я думаю, что вы должны определить отправителя почты (MAIL_FROM_ADDRESS) как ваш почтовый ящик, с которым вы хотите отправлять электронные письма.

например, если ваш MAIL_USERNAME в .env равен [email protected] вы должны определить свой MAIL_FROM_ADDRESS (или, конечно, $mail->from()) как [email protected] .

Я не думаю, что Gmail позволяет отправлять электронные письма от имени другого пользователя (другой адрес).

4
Uğur Arıcı

Аналогичная проблема 587 порт

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

Я получаю ту же ошибку .. Она работает нормально, когда я изменил EMAIL_ENCRYPTION Это было 'encryption' => env('MAIL_ENCRYPTION', 'tps'), до Я изменяю его на '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

Обновите приведенный выше код в вашем файле .env и затем выполните эти команды в терминале. 

  1. composer dump-autoload

  2. php artisan serve

0
sparsh turkane