如何使用 laravel 将附件文件发送到电子邮件
Posted
技术标签:
【中文标题】如何使用 laravel 将附件文件发送到电子邮件【英文标题】:how to send attachment files to email using 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>
我尝试制作一个简单的联系表格以发送到我的电子邮件。目前它可以发送该电子邮件但没有附件。所以我尝试为附件编写代码,但它似乎没有工作,我收到错误:
未定义变量:请求
我在这里做错了什么?
【问题讨论】:
laravel.com/docs/5.5/mail#attachments @DainisAbols 是的,这就是我尝试做的? 【参考方案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
【讨论】:
以上是关于如何使用 laravel 将附件文件发送到电子邮件的主要内容,如果未能解决你的问题,请参考以下文章