Laravel-当电子邮件地址在变量中时邮件失败,在硬编码时工作


Laravel - Mail fails when email address is in variable, works when hardcoded

我使用Laravel类邮件向客户发送电子邮件:

$item = DB::table('questions')->find($id);
var_dump($item->email);
// send mail to customer
Mail::queue('emails.email', $data, function($message) {     
    $message->to($item->email)->subject('Odpoveď od SCSPPIMKA');    
    $message->sender('mailer@scspimka.sk');
});

当我在 $message->to('example@email.com') 中硬编码电子邮件地址时,一切正常,但是当我在变量中使用电子邮件地址时:$message->to($item->email)出现错误:

Undefined variable: item' in /data/www/scsppimka.local/laravel/vendor/jeremeamia/SuperClosure/src/Jeremeamia/SuperClosure/SerializableClosure.php(99) : eval()'d code:2 

$item->电子邮件的 vardump 显示具有正确电子邮件地址的字符串。什么会导致此问题?

您需要使用 use 将变量从当前上下文获取到匿名函数的上下文$item

Mail::queue('emails.email', $data, function($message) use ($item) {     
    $message->to($item->email)->subject('Odpoveď od SCSPPIMKA');    
    $message->sender('mailer@scspimka.sk');
});