【问题标题】:Set address and name in from using mailable使用 mailable 设置地址和名称
【发布时间】:2018-11-05 16:58:47
【问题描述】:

我在 alravel 5.7 中创建了一个用于发送电子邮件的可邮寄类,但在获取名称时遇到了一些问题。

在 config/mail.php 中有一个配置:

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

但我在 .env 中被覆盖了

MAIL_FROM_NAME=test@test.com
MAIL_FROM_NAME='test user'

当发送带有可邮寄的电子邮件时,在我的构建方法中:

return $this->from($this->from)
                    ->subject($this->emailSubject)
                    ->view('email_template')
                    ->with('data', $this->data);

电子邮件已发送并显示来自谁:(test@test.com),但名称不可用。

为什么??

* 更新 *

我忘了清除缓存:)

php artisan config:cache
php artisan config:clear

现在可以了。如果你在 .env 中覆盖了,就不需要 from() 方法

MAIL_FROM_NAME=
MAIL_FROM_NAME=

【问题讨论】:

  • 如果您在全球范围内使用姓名和电子邮件,那么只需在您的config/app.php 中使用'from' => ['address' => 'example@example.com', 'name' => 'App Name'],,就不需要在您的build method 中使用$this->from()

标签: php laravel


【解决方案1】:

如果 from 方法与 env 或使用中的不同,则删除该方法

return $this->from(config('mail.from.address'), config('mail.from.name'))
                ->subject($this->emailSubject)
                ->view('email_template')
                ->with('data', $this->data);

【讨论】:

  • 我尝试删除 from 方法并使用 config....但同样的问题。它只显示电子邮件而不显示名称
  • 问题出在缓存上。这个缓存杀了我:))
【解决方案2】:

您没有将second argument 传递给给出名称的Mailable::from()

但是,如果您的应用程序对其所有电子邮件使用相同的“发件人”地址,则在您生成的每个可邮寄类中调用 from 方法会变得很麻烦。相反,您可以在config/mail.php 配置文件中指定一个全局“发件人”地址。如果在可邮寄类中没有指定其他“发件人”地址,则将使用此地址:

'from' => ['address' => 'example@example.com', 'name' => 'App Name'],

https://laravel.com/docs/5.7/mail#generating-mailables

也就是说,如果不需要per-environment返回地址,直接在config/mail.php中设置值即可。

【讨论】:

  • 即使我明确设置:return $this->from('test@test.com', 'test app name') 也不起作用。它显示来自 MAIL_FROM_ADDRESS(来自 env)的电子邮件,但不显示名称
猜你喜欢
  • 2013-11-11
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
相关资源
最近更新 更多