无法使用Laravel发送电子邮件

时间:2019-03-14 16:08:10

标签: laravel authentication smtp

我是Laravel的新手,正在尝试配置邮件。我的.env文件配置为:

{
  "query" : {
    "bool" : {
      "filter": [{
        "match": {
          "place": "Boston"
        }
      }],
     "must":[{
        "multi_match" : {
  "query":    "Law Firm", 
  "fields": [ "type", "name" ],
  "type": "most_fields"
          }
      }]
    }
  }
}

对于我的邮件测试,我使用修补程序:

MAIL_DRIVER=SMTP
MAIL_HOST=vserv.******.***
MAIL_PORT=587
MAIL_USERNAME=admin@******.***
MAIL_PASSWORD=*********   <--- (9 chars lengh)
MAIL_ENCRYPTION=TLS

在测试之前,我将缓存刷新为:

>php artisan tinker
>>> Mail::send('mails.contact',[], function($message) { $message->to('sergio@******.****')->subject('Testing email'); });

修补匠返回此错误:

>php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!

服务器端,邮件日志有错误:

 Swift_TransportException with message 'Failed to authenticate on SMTP server with username "admin@******.***" using 3 possible authenticators. Authenticator CRAM-MD5 returned Swift_TransportException: Expected response code 235 but got code "535", with message "535 5.7.8 Error: authentication failed: authentication failure 
" in ****/vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php:457

注意:我在env中使用的密码为9个字符,但错误消息中的密码始终少1个字符!如果我输入了错误的10个字符长度的密码,则会显示错误(密码len = 9),依此类推。有道理吗?

感谢您的任何建议。

1 个答案:

答案 0 :(得分:3)

该错误表明您的用户名或密码错误。在这种情况下,密码字符串中会包含一个#字符,这会使其余密码被解释为注释。

解决方案是引用密码:

MAIL_PASSWORD="my#secret"

如果它曾经可以工作,现在不再工作,那可能是因为Laravel 5.8包含了dotenv库的更新版本,该版本更改了行为:

https://laracasts.com/discuss/channels/laravel/beware-in-env-files