Laravel 邮件中的“回复”字段不起作用
Posted
技术标签:
【中文标题】Laravel 邮件中的“回复”字段不起作用【英文标题】:"Reply-to" field in Laravel mail is not working 【发布时间】:2014-03-05 04:55:04 【问题描述】:我需要帮助来弄清楚如何在app/config/mail.php
中设置reply-to
字段。我正在使用 Laravel 4,但它不起作用。这是我的app/config/mail.php
:
<?php
return array(
'driver' => 'smtp',
'host' => 'smtp.gmail.com',
'port' => 587,
'from' => [
'address' => 'sender@domain.com',
'name' => 'E-mail 1'
],
'reply-to' => [
'address' => 'replyto@domain.com',
'name' => 'E-mail 2'
],
'encryption' => 'tls',
'username' => 'sender@domain.com',
'password' => 'pwd',
'pretend' => false,
);
【问题讨论】:
我在 swiftmailer 文档中搜索它,但没有找到关于“回复”字段的任何信息。 将其更改为reply_to
并且应该从 5.4+ 开始工作
【参考方案1】:
很确定它不会以这种方式工作。您可以在配置文件中设置“From”标头,但在发送过程中会传递其他所有内容:
Mail::send('emails.welcome', $data, function($message)
$message->to('foo@example.com', 'John Smith')
->replyTo('reply@example.com', 'Reply Guy')
->subject('Welcome!');
);
FWIW,传递给回调的$message
是Illuminate\Mail\Message
的一个实例,所以你可以调用它的各种方法:
另外,还有一个神奇的 __call
方法,因此您可以运行通常在底层 SwiftMailer 类上运行的任何方法。
【讨论】:
这太可悲了!回复是这样一个基本信息,可以在mail.php conig文件中设置。 对不起,我没听懂你的遗言。 __call 方法对我有什么用处?__call()
的好处只是意味着,如果 SwiftMailer 类的方法没有被 Laravel 包装(即不在上面的列表中),你仍然可以使用它。例如,addTextHeader()
我不明白。我如何回复特定的对话或话题。是否有某种消息/对话/线程 ID 来链接它?
Reply-To
标头指定回复邮件时使用的电子邮件地址。 In-Reply-To
和/或References
标头应该与原始邮件的Message-Id
标头具有相同的值,这就是邮件客户端知道将对话分组到一个线程中的方式。见tools.ietf.org/html/rfc2822#section-3.6.4 和cr.yp.to/immhf/thread.html【参考方案2】:
从 Laravel 5.3 开始可以添加全局回复。在您的 config/mail.php 文件中添加以下内容:
'reply_to' => [
'address' => 'info@xxxxx.com',
'name' => 'Reply to name',
],
【讨论】:
这个答案是正确的,即使在 Laravel 5.4 中也能正常工作。我认为它可以标记为这个问题的正确答案。由于最近的版本和.env
文件中引入了env()
功能,所以也可以适当使用。 'reply_to' => [ 'address' => env('MAIL_REPLY_ADDRESS', 'email@domain.com'), 'name' => env('MAIL_REPLY_NAME', 'Reply Name'), ],
这个答案很好用。
对我来说它不起作用,因为我使用了相同的回复地址地址作为收件箱地址。在这种情况下,当您点击回复时,Thunderbird 会忽略回复地址。 DOH!
像魅力一样工作!谢谢你:)【参考方案3】:
我正在使用 mailable 并在我的 App\Mail\NewUserRegistered::class 上的构建函数中执行此操作,
public function build()
return $this->replyTo('email', $name = 'name')
->markdown('emails.admin_suggestion');
【讨论】:
【参考方案4】:另一种选择是自定义 SwiftMailer 消息 - https://laravel.com/docs/8.x/mail#customizing-the-swiftmailer-message。
->withSwiftMessage(function ($message) use ($senderEmail)
$message->getHeaders()
->addTextHeader('Return-Path', $senderEmail);
)
【讨论】:
以上是关于Laravel 邮件中的“回复”字段不起作用的主要内容,如果未能解决你的问题,请参考以下文章