使用 Laravel 发送指定发件人地址的电子邮件

3
我已经配置了我的mail.php配置文件,使用gmail帐户发送邮件。一切看起来很好,但是当我尝试使用另一个帐户(而不是在mail.php配置文件中使用的地址)发送电子邮件时,我会从配置文件中设置的地址收到一封电子邮件。
Mail::send('emails.contact_mail', array(
            'email' => $fromEmail,
            'name' => $user,
            'subject' => $subject,
            'message' => $message_content,
                ), function($message)use ($fromEmail,$user,$subject) {

                    $message->to('s111@gmail.com');
                    $message->from('test@gmail.com', $user);
                    $message->subject($subject);

                });

看起来$message->from不起作用。我从mail.php文件中设置的地址而不是test@gmail.com收到了来自s111@gmail.com的电子邮件。 有解决方案吗?如何更改from地址?

3个回答

2

您仍将使用配置文件中设置的SMTP服务器。理论上可以设置另一个“from”标头,但除非您设置了已添加到Google帐户的地址,否则GMail SMTP将忽略它。

解决方案:要么不使用另一个“from”地址,要么将该地址添加到您的Google帐户中。


1
或者使用一个接受任意“from”头的SMTP服务器。 - ceejayoz
他可以这样做,但大多数垃圾邮件过滤器会捕捉到这些邮件。 - nxu
我使用Mandrill,只要我发送的邮件是来自于我的一个具有有效SPF/DKIM的域名,那么它就不必是一个现存的地址(例如noreply@example.com也可以正常工作)。 - ceejayoz

1

我认为这是解决此问题的最佳方案。我们可以如下解决: $message->from('sender@email.com', 'sender_name'); 并且我们还应该在config/mail.php中移除以下代码块。

'from' => [
 'address' => 'sender@email.com',
 'name' => 'sender_name',
],

当然,这将在 Laravel 框架上运行。

1
有几件事情你可以尝试一下:

$message->replyTo('test@gmail.com', $user);

据我了解,在电子邮件中,“From:”标题应该决定显示的发件人。下面的代码可以用于更改“From”标题:
$message->getHeaders()->addTextHeader('From', 'Your Name <test@gmail.com>');

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