在Laravel 5.4中,没有发件人地址无法发送消息

8
在我的Laravel 5.4应用程序中,当用户注册时,我想向用户发送电子邮件通知。我已经设置了一切,但没有起作用,并显示异常,如下所示:
Cannot send message without a sender address

我正在使用mailtrap

我还运行了artisan命令php artisan config:cachephp artisan cache:clear

这是我的.env文件

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=3e917ca6b3dabc
MAIL_PASSWORD=05abe282eca67f
MAIL_ENCRYPTION=tls
5个回答

12

我遇到了与Laravel 6.15.1完全相同的问题。

事实证明,你只需要在.env文件中删除这些行:

MAIL_FROM_ADDRESS=null
MAIL_FROM_NAME="${APP_NAME}"

2

我认为您没有重新启动服务。您需要通过以下两个步骤重新启动服务:

步骤1:停止服务(CMD):

Ctrl + C

步骤二:再次运行服务:
npm run dev
php artisan serve

2
请更新你的.env文件,例如:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=youremailaddress
MAIL_PASSWORD=gtxajikwsqmlaqc //your app password

我想使用Mailtrap而不是Gmail。 - Shahid Hussain
@ShahidHussain:区别在于 MAIL_USERNAMEMAIL_PASSWORD - user10186369
MAIL_USERNAME和MAIL_PASSWORD已经在使用,你指的是哪一个MAIL_USERNAME和MAIL_PASSWORD? - Shahid Hussain
@ShahidHussain:请查看此链接 - AddWeb Solution Pvt Ltd

2
在您的.env文件中,您需要设置电子邮件帐户的电子邮件地址和密码。
配置Mailtrap的步骤:

1)注册Mailtrap:https://mailtrap.io/register/signup

2)转到收件箱页面:https://mailtrap.io/inboxes

3)单击Demo Inbox链接,您将看到以下Mailtrap SMTP凭据,其中用户名和密码将类似于:

"username" => "b8f19cb615a7b3",
"password" => "8218011886905f",

现在切换到您项目的根目录下的.env文件,并更改以下行:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=***USER NAME***
MAIL_PASSWORD=***PASSWORD***
MAIL_ENCRYPTION=null

完成.env编辑后,请在终端中输入以下命令以清除缓存:
php artisan config:cache

Mailtrap在Laravel 5.6中可用,但在Laravel 5.4中不可用,原因是什么? - Shahid Hussain
我不想使用Gmail,我想使用Mailtrap。 - Shahid Hussain
1
@ShahidHussain 这是正确的答案,请检查您的 MAIL_ENCRYPTION=null 是否为了诊断目的而不是tls。 - user5283119

1
首先,检查您在.env文件中的环境变量。
它们应该长这样:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=username
MAIL_PASSWORD=password
MAIL_ENCRYPTION=null

其次,请检查您是否有一个发件人地址,因为您的错误提示表明您没有发送地址无法发送电子邮件。

config/mail.php

检查

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

你可以在你的.env文件中设置MAIL_FROM_ADDRESSMAIL_FROM_NAME,例如:
MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="Example"

如果您正在使用可邮寄的邮件
您可以在build()函数中设置电子邮件的发送者,例如。 来源
/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->from('example@example.com')
                ->view('emails.orders.shipped');
}

你能展示一下发送邮件的代码吗? - user5283119

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