预期的响应代码220,但得到了代码""消息""

时间:2017-03-13 18:19:15

标签: php laravel email post smtp

每次我在Laravel应用程序上提交联系表单时,都会在标题中收到错误消息。我已按照this discussion中的建议行事,但即使在php artisan cache:clearphp artisan config:cache之后也没有效果。这是相关代码:

.env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=username@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl

配置/ 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', 'hello@example.com'),
        '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'),
        ],
    ],

];

我的文件印象是全球的&#39;来自&#39;除非没有提供其他地址,否则不会开火,但在我的邮件控制器中,我指定了提供给联系表格的地址为&#39; from,&#39;某种程度上是一个冲突点?它似乎不是来自错误消息的详细信息。

由于联系表单不是一个独特的视图,而是主页面视图的底部,因此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('username@gmail.com');
      $message->subject($data['subject']);
    });
  }

4 个答案:

答案 0 :(得分:5)

我认为你应该将邮件发件人(MAIL_FROM_ADDRESS)定义为你要用来发送电子邮件的gmail。

例如,如果MAIL_USERNAME .env example@gmail.com ,您应该定义MAIL_FROM_ADDRESS(当然还有$mail->from() )如 example@gmail.com

我不认为gmail允许您以其他用户(另一个地址)发送电子邮件。

答案 1 :(得分:1)

Similar problem 587端口

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=username@gmail.com
MAIL_PASSWORD=mypassword

答案 2 :(得分:0)

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=address@gmail.com
MAIL_PASSWORD=secreat
MAIL_ENCRYPTION=ssl

更新.env文件中的上述代码,然后在终端

中运行这些命令
  1. composer dump-autoload

  2. php artisan serve

答案 3 :(得分:0)

我得到了同样的错误..当我改变EMAIL_ENCRYPTION时工作正常 之前是'encryption' => env('MAIL_ENCRYPTION', 'tps'), 我将其更改为'encryption' => env('MAIL_ENCRYPTION', ''),