【问题标题】:how to send attachment files to email using laravel如何使用 laravel 将附件文件发送到电子邮件
【发布时间】:2018-04-13 13:14:38
【问题描述】:

控制器:

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>

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

未定义变量:请求

我在这里做错了什么?

【问题讨论】:

标签: php html laravel email email-attachments


【解决方案1】:
      Mail::send('mail', array('type'=>'AspirantsSelect','AspirantsSelectSms'=>$smg), function($message) use($emailA,$pic)
                        {
                            $message->to($emailA)->subject('Aspirants Selection');
                            $message->attach($pic);
                        });

【讨论】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      <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())
                      );
                  }
              }
          });
      

      【讨论】:

        【解决方案4】:
        $file_to_attach = 'freestuff/free-file.pdf';
        
        $email->AddAttachment( $file_to_attach , 'free-file.pdf' );
        

        使用 AddAttactment

        【讨论】:

          猜你喜欢
          • 2013-02-07
          • 2016-09-20
          • 1970-01-01
          • 1970-01-01
          • 2021-03-06
          相关资源
          最近更新 更多