【问题标题】:How to correctly send mail in Laravel?如何在 Laravel 中正确发送邮件?
【发布时间】:2019-07-11 13:13:17
【问题描述】:

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

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

这是我的代码:

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

    Mail::send('email-view', ['data' => $data], function ($message) {
    $message->to(env('MAIL_USERNAME'))->subject('Contact Us Email Notification!!');
    });
    return redirect()->back();
}

这个错误的原因是什么?

【问题讨论】:

    标签: laravel


    【解决方案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);
            });
    

    注意:请在任何配置文件中设置环境变量并从配置文件中获取此电子邮件。

    【讨论】:

      【解决方案2】:

      我认为您可以检查 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');
      

      希望能帮到你!

      【讨论】:

        猜你喜欢
        • 2020-01-17
        • 2019-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-07
        • 2019-10-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多