Laravel邮件中的"Reply-to"字段无法工作

40

我需要帮助解决如何设置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)”字段的任何信息。 - cawecoy
1
将其更改为“reply_to”,并应该在5.4+版本中运行。 - Dennis van Dalen
4个回答

101

我很确定它不是这样工作的。您可以在配置文件中设置“From”头,但在发送期间传递其他所有内容:

Mail::send('emails.welcome', $data, function($message)
{
    $message->to('foo@example.com', 'John Smith')
        ->replyTo('reply@example.com', 'Reply Guy')
        ->subject('Welcome!');
});

顺带一提,传递给回调函数的$messageIlluminate\Mail\Message的一个实例,因此您可以调用各种方法:

  • ->from($address, $name = null)
  • ->sender($address, $name = null)
  • ->returnPath($address)
  • ->to($address, $name = null)
  • ->cc($address, $name = null)
  • ->bcc($address, $name = null)
  • ->replyTo($address, $name = null)
  • ->subject($subject)
  • ->priority($level)
  • ->attach($file, array $options = array())
  • ->attachData($data, $name, array $options = array())
  • ->embed($file)
  • ->embedData($data, $name, $contentType = null)

此外,还有一个“魔术”__call方法,因此您可以运行在底层SwiftMailer类上通常运行的任何方法。


很遗憾!回复地址是如此基本的信息,它可以在mail.php配置文件中设置。 - cawecoy
1
__call()的好处是,如果SwiftMailer类中有一个方法没有被Laravel封装(即上面列表中没有),你仍然可以使用它。例如,addTextHeader() - Colin
1
我不明白。如何回复特定的对话或线程?是否有某种消息/对话/线程ID可以链接它? - user4612911
2
“Reply-To” 头部指定了在回复邮件时使用的电子邮件地址。 “In-Reply-To” 和/或 “References” 头部应该与原始邮件的 “Message-Id” 头部具有相同的值,这就是邮件客户端知道如何将对话组合在一个线程中的方式。请参见 https://tools.ietf.org/html/rfc2822#section-3.6.4 和 http://cr.yp.to/immhf/thread.html。 - Colin
这个答案已经过时了 :) - insign
显示剩余2条评论

24

从 Laravel 5.3 开始,可以添加全局回复。在您的 config/mail.php 文件中添加以下内容:

'reply_to' => [
    'address' => 'info@xxxxx.com',
    'name' => 'Reply to name',
],

3
这个答案是正确的,即使在 Laravel 5.4 中也可以正常工作。我认为它可以标记为这个问题的正确答案。由于env()函数和.env文件已经在最近的版本中被引入,因此也可以恰当地使用。 'reply_to' => [ 'address' => env('MAIL_REPLY_ADDRESS', 'email@domain.com'), 'name' => env('MAIL_REPLY_NAME', 'Reply Name'), ],这个答案完全有效。 - Derick Alangi
对我来说,它没有起作用,因为我使用了与收件箱地址相同的ReplyTo地址。在这种情况下,当你点击回复时,Thunderbird会忽略ReplyTo地址。唉! - Floris

0

0

我正在使用可邮寄的功能,在我的App\Mail\NewUserRegistered::class中的构建函数中,我正在执行以下操作,

public function build()
    {
        return $this->replyTo('email', $name = 'name')
                ->markdown('emails.admin_suggestion');
    }

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