如何使用 laravel 将附件文件发送到电子邮件

新手上路,请多包涵

控制器:

 public function sendemail(Request $request)
{
  $data = array(
    'name'=> $request->name,
        'email'=> $request->email,
        'text'=> $request->text,
        'category'=> $request->category,
        'company'=> $request->company,
        'number'=> $request->number
    );

  \Mail::send('AltHr/Portal/supportemail', $data, function ($message) use($data){

      $message->from($data['email'], $data['name']);
      $message->to('ra7veer@gmail.com')->subject($data['company'] . ' - ' .$data['category']);

      $message->attach($request->file('files')->getRealPath(), [
        'as' => $request->file('files')->getClientOriginalName(),
        'mime' => $request->file('files')->getMimeType()
     ]);

  });

  return view('AltHr.Portal.support');
    }

刀:

 <div class="form-group form-group-default">
 <label>Attachment</label>
 <input type="file" name="files[]" accept="file_extension|image/*|media_type" multiple>
</div>

我尝试做一个简单的联系表格发送到我的电子邮件。目前它可以发送该电子邮件但没有附件。所以我尝试为附件编写代码,但它似乎没有工作我收到错误:

未定义的变量:请求

我在这里做错了什么?

原文由 anonymous 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 291
2 个回答

您的 $request 变量未定义,因为 $request 变量在您需要在下面传递的函数中不可用

\Mail::send('AltHr/Portal/supportemail', compact('data'), function ($message) use($data, $request){ ....   });

在表单标签中添加 attr enctype="multipart/form-data"

 <form role="form" action="{{action('AltHr\Portal\PortalController@sendemail')}}" method="post" class="m-t-15" enctype="multipart/form-data">
    ....
</form>

在您的 sendemail() method

 $data = array(
        'name'=> $request->name,
        'email'=> $request->email,
        'text'=> $request->text,
        'category'=> $request->category,
        'company'=> $request->company,
        'number'=> $request->number
    );
    $files = $request->file('files');
    \Mail::send('AltHr/Portal/supportemail', compact('data'), function ($message) use($data, $files){
        $message->from($data['email']);
        $message->to('nuru7495@gmail.com')->subject($data['company'] . ' - ' .$data['category']);

        if(count($files) > 0) {
            foreach($files as $file) {
                $message->attach($file->getRealPath(), array(
                    'as' => $file->getClientOriginalName(), // If you want you can chnage original name to custom name
                    'mime' => $file->getMimeType())
                );
            }
        }
    });

原文由 Mohammad Nurul Huda Rimon 发布,翻译遵循 CC BY-SA 4.0 许可协议

$emails = ['email address 1', 'email address 2'];
$files = ['url 1','url 2'];
Mail::send('emails.welcome', [], function($message) use ($emails, $files)
{
    $message->to($emails)->subject('This is test e-mail');
    foreach ($files as $file){
        $message->attach($file);
    }
});

原文由 Ollobergan Karimov 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题