Laravel Homestead中的Swift: 无法发送没有发件人地址的消息

54

当我尝试发送密码重置邮件时,在Laravel 5.1 Homestead中使用默认的电子邮件设置出现了这个错误。

Swift_TransportException in AbstractSmtpTransport.php line 162:Cannot send message without a sender address

地址填写在app/config/mail.php中:

'from' => array('address' => 'myusername@gmail.com', 'name' => 'hawle'),
21个回答

2

我尝试了这里所有的解决方案,但直到我运行了以下三个命令才成功:

php artisan config:clear

php artisan cache:clear

php artisan config:cache


2

如果您没有访问.env文件的权限,您可以在app/config/mail.php中添加默认值到这些env调用中,就像这样:

    'from' =>  ['address' => env('MAIL_FROM_EMAIL','do_not_reply@email.com'), 'name' => env('MAIL_FROM_NAME','SpongeBob')],

这种方法会尝试从.env文件中获取数据,如果那里没有任何内容,它将默认使用你设置的内容。

2
在 Laravel 7 中,你的 .env 文件应该像这样:


MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME="your username"
MAIL_PASSWORD="your password"
MAIL_ENCRYPTION=tls
#MAIL_FROM_ADDRESS=null
#MAIL_FROM_NAME="${APP_NAME}"

请确保这两行代码像这样被注释掉...

#MAIL_FROM_ADDRESS=null
#MAIL_FROM_NAME="${APP_NAME}"

最后一步: 在终端中运行以下命令来成功发送通知 -

php artisan config:cache
php artisan cache:clear 
php artisan config:clear
    

1
不要忘记清除配置缓存!这就是我遇到的问题!
php artisan config:cache

1

如果你在部署阶段遇到这个问题,并在尝试了以上所有步骤后仍然遇到相同的错误,请确保在 .env 文件中没有重复的 MAIL_FROM_ADDRESS。如果你有一个被注释掉的,也请将其删除。


1
如果您正在使用Gmail账户,现在的设置方式已经不同了。请配置.env文件:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=example@gmail.com

您可以使用SSL加密,并按照以下设置进行操作:
MAIL_ENCRYPTION=ssl
MAIL_PORT=465

设置好一切后运行:

php artisan config:cache

您可能还需要在https://myaccount.google.com/security上检查“较不安全的应用程序访问”选项。


0

我不明白为什么,但我已经做了以上所有的事情,却没有任何改变。尝试了开关 php artisan serve

为了解决这个问题,我尝试了重新启动电脑,然后一切都正常运行了。

注意:

  • 我使用的是Ubuntu操作系统。
  • 有时候我的电脑在php artisan serve还在运行时进入睡眠状态。我认为这可能导致了一个错误。

0
我已经尝试了以上所有方法,但仍然没有得到期望的结果。相反,错误变成了: 期望响应代码250,但收到的是代码“530”,并显示“530 5.7.1需要身份验证”。 从这里开始,您只需通过运行以下命令重新启动开发服务器即可解决该问题: php artisan serve 对我来说,这个方法非常有效。

0

问题在于.env文件中MAIL_FROM_ADDRESS的空值。

解决方案1: 将MAIL_FROM_ADRESS的值更改为与您的电子邮件地址匹配(不要忘记重新运行服务器)。 解决方案2: 保持.env文件不变,但需要更改mail.php(app/config/mail.php):

从这些开始:

 'from' => [
    'address' => env('MAIL_FROM_ADDRESS','mail@test.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
]

to:

'from' => [
    'address' => 'mail@test.com',
    'name' => env('MAIL_FROM_NAME', 'Example'),
]


0

你需要用你自己的值更改这些默认值

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接