Laravel电子邮件附件

时间:2016-08-11 01:49:06

标签: php laravel email oop attachment

我在这里想到了一个错误。

$file = $request->file('upload_cv');

$fileName = $file->getClientOriginalName();

$request->file('upload_cv')->move("cv/", $fileName);

$tambah->upload_cv = $fileName;

$tambah->save();

$email = DB::table('user')->where('email');

Mail::send('emails.welcome', array(
    'email'  =>  $request['email'],
    'HP'     =>  $request['kontak'],
    'nama'   =>  $request['nama'],
    'posisi' =>  $request['posisi'],
    'CV'     =>  $tambah->upload_cv = $fileName
), function ($message) use ($request, $tambah, $email, $file) 
{
    $message->from('MYEMAIL@gmail.com', $request->posisi);      
    $message->to('THEIREMAIL@gmail.com')
            ->subject('Lamaran Baru')
            ->cc('SOMEPERSON@yahoo.com.sg')
            ->attach($file)
            ->replyTo($request->email);

    $message->getSwiftMessage();
});

return redirect()->to('index');

当我点击提交时会发生错误,它会永远加载到当前表单上。如果我删除->attach($file),它将重定向到索引,这意味着它有效。但是,如果我将->attach($file)始终加载并仍然在当前页面上。

请解释出现了什么问题,谢谢。

1 个答案:

答案 0 :(得分:0)

attach方法需要路径到文件,但您直接从请求中传递UploadedFile实例。而是使用文件的路径,以便laravel可以找到并将其附加到您的邮件中。

您必须传递文件的完整路径。例如,如果要在cv文件夹中的项目根目录中上传文件。 e.g。

  • 项目根目录
    • CV

然后你可以这样写。

->attach( base_path( "cv/" . $file->getClientOriginalName() ) );