首页 > 解决方案 > Laravel/PHP 错误:未定义变量:email2

问题描述

我试图发送一封电子邮件,当我想写目的地的电子邮件地址(电子邮件是函数的参数)时,我遇到了这个错误。有人能帮我吗。

这是我的功能:

public function email($name, $email2) {
  $data = array('name'=> $name);
  Mail::send('mail',$data,function($message) {
    $message->to($email2, $name)->subject('Deposit Confirmation');
    $message->attach(public_path('document.pdf'));
    $message->from('xxx@xxx.pt', 'XXX');
  });
}

这是我的错误:“未定义的变量 email2”

谢谢你

标签: phplaravelemailvariables

解决方案


当您使用匿名函数传递变量时,您应该使用use构造

public function email($name, $email2) {
      $data = array('name'=> $name);
      Mail::send('mail',$data,function($message) use ($name, $email2) {
        $message->to($email2, $name)->subject('Deposit Confirmation');
        $message->attach(public_path('document.pdf'));
        $message->from('xxx@xxx.pt', 'XXX');
      });
    }

在这里你可以找到更多关于匿名函数的例子https://www.php.net/manual/en/functions.anonymous.php

这里来自官方文档的简单示例

$message = "hello";

// Inherit $message
$example = function () use ($message) {
    var_dump($message);
};

$example();

// Output: string(5) "hello"

推荐阅读