如何在Laravel中正确发送邮件?

时间:2019-07-11 13:13:17

标签: laravel

每当我在Laravel中发送邮件时,都会抛出此错误消息:

给定[]的邮箱中的地址不符合RFC 2822,3.6.2。

这是我的代码:

subscribe(on:)

该错误的原因是什么?

2 个答案:

答案 0 :(得分:1)

请这样发送邮件:

Mail::send('frontend.englishlistening.contact_reply', $data, function($message) use ($toEmail, $toName, $fromEmail, $fromName, $subject){ 

          $message->from($fromEmail, $fromName);
          $message->to($toEmail, $toName);
          $message->subject($subject);
        });

注意:请在任何配置文件中设置env变量,然后从配置文件中获取此电子邮件。

答案 1 :(得分:0)

我认为您可以检查env('MAIL_USERNAME')是否返回正确的邮件格式。另外,您可以添加'from'方法。您可以这样做(在Mail :: ...之前):

dd(env('MAIL_USERNAME'))

如果您得到的是错误的值或不是正确的格式的字符串和电子邮件地址之类的值,那就算了!

确定要像对象一样接收$ data吗?如果不是这样,您就不需要这样传递var:['data'=> $ data],只需$ data

请注意,我没有在此处包括env('MAIL_USERNAME')。

 Mail::send('email-view', $data, function ($message) {
     $message->from('thesystem@mail.com', 'the name of your app');
     $message->to('correct@email.com', 'This is a correct format')->subject('Example');
 });

但是,如果您需要传递来自env('MAIL_USERNAME')的电子邮件地址,并且已验证env('MAIL_USERNAME')正确返回了电子邮件地址,那么为什么不尝试将其包含在de $中数据变量?像这样:

 $data = $request->only('name', 'email', 'mobile', 'message') + ['to' => env('MAIL_USERNAME')];

或者也许您可以使用来自阵列的电子邮件:

public function contact_email(Request $request)
{
    $data = $request->only('name', 'email', 'mobile', 'message');

    Mail::send('email-view', $data, function ($message) use ($data) {
        $message->from('thesystem@mail.com', 'the name of your app');
        $message->to($data['email'], $data['name'])->subject('This is a way');
    });
 }

给您的提示: 您不需要以这种方式从$ request获取数据。您可以这样:

  $data = $request->only('name', 'email', 'mobile', 'message');

希望我能帮助您!