如何在 Laravel 邮件通知中更改发件人名称

52

这是问题:

This is the problem

与该电子邮件相关的名称显示为“示例”。

29
->from('example@example.com', 'Awesome Name') - EddyTheDove
7个回答

78

config/mail.php中,将from属性设置为:

'from' => ['address' => 'someemail@example.com', 'name' => 'Firstname Lastname']

在这里,地址应该是您想要在发件人电子邮件中显示的地址,名称应该是您想要在发件人姓名中显示的名称。

P.S. 这将成为您发送的每个电子邮件的默认电子邮件设置。

如果您需要通过代码使用名称作为变量,您也可以按照以下方式调用函数from()(从Brad Ahrens答案下面复制,我认为在这里提及是很好的):

return $this
    ->from($address = 'noreply@example.com', $name = 'Sender name')
    ->subject('Here is my subject')
    ->view('emails.view');

感谢您的回复,尽管我已经在您的评论之前找到了它。 - Masterpiece Mas Icang
当然可以。但是在所说的评论中,您需要在每个Mail::send()方法中执行此操作,无论您在何处使用它。但在我的情况下,您不需要这样做。感谢您接受这个答案。 - Dev
如果我们进行这样的配置,能否像上面的评论中提到的那样覆盖发件人地址? - HexaCrop
可以的。请参见@Haseena P A的答案。 - Dev
->from('info@websitedomain.com', '网站名称') 对我很有用。谢谢。 - Kamlesh

36

您可以使用

 Mail::send('emails.welcome', $data, function($message)
    {
        $message->from('us@example.com', 'Laravel');

        $message->to('foo@example.com')->cc('bar@example.com');
    });

参考资料 - https://laravel.com/docs/5.0/mail


16

对于谷歌SMTP,即使您在邮件类中输入发件人地址,它也不会更改。 这是因为谷歌邮件的政策,而不是Laravel问题。 我觉得在这里分享一下。


16

更好的方法是在.env文件中添加变量名和值。

例子:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@example.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls

MAIL_FROM_NAME="My Name"
MAIL_FROM_ADDRESS=support@example.com

注意最后两行。它们将与发送的电子邮件中的发件人名称发件人电子邮件字段相关联。


10

如果你正在使用Laravel 5.8并且遇到了这个问题,请尝试以下方法,这对我很有效:

在邮件的构建函数中(不是视图,而是邮件本身):

public function build()
{
    return $this
        ->from($address = 'noreply@example.com', $name = 'Sender name')
        ->subject('Here is my subject')
        ->view('emails.welcome');
}

愉快的编码 :)


3
  • 如果您想要全局的“发件人名称”和“发件人邮箱”,

  • 请在 .env 文件中创建这两个键

  • MAIL_FROM_NAME="全局发件人名称"

  • MAIL_FROM_ADDRESS=support@example.com

然后在控制器或 PHP 代码中删除“from”。现在它将访问发件人名称和发件人邮箱。

config\mail.php

 'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'info@example.com'),
        'name' => env('MAIL_FROM_NAME', 'write name if not found in env'),
    ],

在我的控制器上。
$conUsBody = '';

        $conUsBody .= '<h2 class="text-center">Hello Admin,</h2>
                        <b><p> '.trim($request->name).' Want some assesment</p></b>
                        <p>Here are the details:</p>
                        <p>Name: '.trim($request->name).'</p>
                        <p>Email: '.trim($request->email).'</p>
                        <p>Subject: '.trim($request->subject).'</p>';

      $contactContent = array('contactusbody' =>  $conUsBody);

      Mail::send(['html' => 'emails.mail'], $contactContent,

      function($message) use ($mailData)
      {
        $message->to('my.personal.email@example.com', 'Admin')->subject($mailData['subject']);
        $message->attach($mailData['attachfilepath']);
      });
      return back()->with('success', 'Thanks for contacting us!');
    }

我的刀片模板。

<body>
{!! $contactusbody !!}
</body>

0
我认为你的代码片段中有一个错误。你写了
from(config('app.senders.info'), 'My Full Name')
所以config('app.senders.info')返回一个数组。
方法from应该有两个参数:第一个是包含地址的字符串,第二个是发送者姓名的字符串。所以你应该改成这样
from(config('app.senders.info.address'), config('app.senders.info.name'))


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