首页 > 解决方案 > 如何在电子邮件中附加一张 base64 图像?

问题描述

我在发送电子邮件时尝试将 base64 图像放入附件中,但收到错误消息。

我的功能:

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

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

我收到此错误:

"message": "未定义变量:数据",

标签: phplaravel

解决方案


$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);

推荐阅读