如何更改Laravel中邮件的header信息?

How to change header information of mail in Laravel?

我正在使用 Laravel 5.1

创建一个简单的联系我们表单
public function sendMessage(){
    $data = [
        'name' => Input::get('name'),
        'email' => Input::get('email'),
        'subject' => Input::get('subject'),
        'body' => Input::get('body')
    ];
    Mail::send('emails.contact',$data, function($message) use($data){
        $message->from($data['email'], $data['name']);
        $message->to('smartrahat@gmail.com','Mohammed');
        $message->subject($data['subject']);
    });
    Session::flash('success_message','Mail sent successfully!');
    return redirect('contact');
}

一切正常,但发件人电子邮件地址不是从联系页面获得的地址。电子邮件是从我在 .env

中配置的地址发送的

我想从他填写联系表格的发件人电子邮件地址收到电子邮件。或者,你可以说我要更改 header 信息(只有 from,我可以更改其他信息)。

嗯Laravel 将通过给定的 smtp 服务器发送邮件。我猜 smtp 服务器(例如 google 这样做)不会让您将发件人地址更改为该帐户所属的另一个地址。

如果您想直接在您的电子邮件程序中回复此地址,您可以添加 $message->replyTo($data['email'], $data['name']);

Mail::send()函数中的$message变量是一个SwiftMailer消息实例。因此,您可以像 SwiftMailer documentation 显示的那样使用 headers。只需使用 $message->getSwiftMessage() 来获取和操作 headers.

此外,您完全可以更改 From header,但是如果您将其更改为不同的域,您将不得不处理客户端中的网络钓鱼警告。您可以通过设置 DKIM 和 SPF 记录来解决该问题,并且您需要有权访问域的 DNS 设置才能执行此操作。