我如何在电子邮件中附加一个base64图像?

时间:2019-05-17 22:57:52

标签: php laravel

当我发送电子邮件时,我试图在附件中添加base64图像,但收到错误。

我的功能:

具有base64内容的变量在数组$data中具有名称:“ foto”

        public function avisarAnjos(Request $request){


        $data = array(
            'lat' => $request->lat,
            'lng' => $request->lng,
            'foto' => $request->foto,
            'emailUsuario' => $request->emailUsuario,
            'nomeUsuario' => $request->nomeUsuario,
            'telefoneUsuario' => $request->telefoneContato
        );

        $usuariosAnjos = User::select('email')->where('usuario_anjo', 1)->get();



    for($i=0; $i < count($usuariosAnjos);$i++){
        Mail::send('email', $data, function ($message) use ($usuariosAnjos, $i) {
            $message->from('suporte@cademeupet.net', 'Ei, tem um pet precisando da sua ajuda!')->subject('Precisamos de você!');
            $message->to($usuariosAnjos[$i]['email']);
            $message->attachData(base64_decode($data['foto']['base64']), $data['foto']['fotopetencontrado'], ['mime' => $data['foto']['image/jpeg']]);
        });
    }
    return response()->json("Email enviado com sucesso", 201);
}

我收到此错误:

  

“消息”:“未定义的变量:数据”,

1 个答案:

答案 0 :(得分:0)

您忘记在$data闭包参数中传递use像这样:Mail::send('email', $data, function ($message) use ($data, $usuariosAnjos, $i)

public function avisarAnjos(Request $request){


    $data = array(
        'lat' => $request->lat,
        'lng' => $request->lng,
        'foto' => $request->foto,
        'emailUsuario' => $request->emailUsuario,
        'nomeUsuario' => $request->nomeUsuario,
        'telefoneUsuario' => $request->telefoneContato
    );

    $usuariosAnjos = User::select('email')->where('usuario_anjo', 1)->get();



for($i=0; $i < count($usuariosAnjos);$i++){
    Mail::send('email', $data, function ($message) use ($data, $usuariosAnjos, $i) {
        $message->from('suporte@cademeupet.net', 'Ei, tem um pet precisando da sua ajuda!')->subject('Precisamos de você!');
        $message->to($usuariosAnjos[$i]['email']);
        $message->attachData(base64_decode($data['foto']['base64']), $data['foto']['fotopetencontrado'], ['mime' => $data['foto']['image/jpeg']]);
    });
}
return response()->json("Email enviado com sucesso", 201);