我在发送电子邮件时在Laravel中出错。
我有一个带有选择标签的表单,当我选择用户并单击提交时,我需要在选择后向他发送邮件。
这是我的Controller方法:
public function store()
{
$customerId = Input::get('customerid');
$invoice = New Invoice ;
$invoice->customerid = Input::get('customerid');
$invoice->save();
if ($invoice->save()) {
$email = Customer::whereRaw(' id = :customer',array('customer'=> $customerId ))->first(array('email'));
Mail::send('invoices.mail', array($pinvoices,$unpinvoices), function($message) {
$message->to($email , 'Name')->subject('your invoices ');
});
}
}
当我单击提交时出现错误:
未定义变量:电子邮件
并且当我尝试将电子邮件添加为静态值时,例如:
$email = "[email protected]" ;
Mail::send('invoices.mail', array($pinvoices,$unpinvoices), function($message){
$message->to($email , 'Name')->subject('your invoices ');
});
也出现相同的错误!
并且当我输入这样的值时:
Mail::send('invoices.mail', array($pinvoices,$unpinvoices), function($message){
$message->to("[email protected]" , 'Name')->subject('your invoices ');
});
效果很好!
闭包就像常规函数一样工作。您需要将外部作用域变量注入到函数的作用域中。
Mail::send('invoices.mail', array($pinvoices,$unpinvoices), function($message) use ($email)
{
$message->to($email , 'Name')->subject('your invoices ');
});
您应该在函数中传递$email
参数
$email = "[email protected]" ;
Mail::send('invoices.mail', array('email'=>$email, $pinvoices,$unpinvoices), function($message){
$message->to($email , 'Name')->subject('your invoices ');
});