【问题标题】:Laravel mail function - scope issue?Laravel 邮件功能 - 范围问题?
【发布时间】:2015-07-25 12:55:11
【问题描述】:

我正在使用 laravel 的邮件功能来发送我的用户的确认电子邮件。问题是,我收到一个错误“未定义的变量:电子邮件”

这是我的代码:

    $email="someemail@gmail.com";
    $name="thename";

    \Mail::send('emails.verify', ['confirmation_code' => $user->confirmation_code], function($message) {
        $message->from('myemail@myserver.com', 'Confirmation')->to($email, $name)->subject('Please verify your email address');
    });

显然声明的变量 $email 和 $name 与 $message->from.. 不在同一范围内被调用..

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: php laravel scope


    【解决方案1】:

    您应该在闭包中使用use 语句来“包含”$email$name 变量:

    \Mail::send('emails.verify', 
        ['confirmation_code' => $user->confirmation_code], 
        function($message) use ($email, $name) {
            $message->from('myemail@myserver.com', 'Confirmation')
                    ->to($email, $name)
                    ->subject('Please verify your email address');
        }
    );
    

    【讨论】:

    • 您在使用声明中缺少$name
    【解决方案2】:

    您收到此错误是因为您尝试在函数中使用未定义的变量“电子邮件”,因此您需要包含“使用”语句以使“电子邮件”变量在闭包中可用,如下所示:

    
      $email="someemail@gmail.com";
      $name="thename";
    
    \Mail::send('emails.verify', ['confirmation_code' => $user->confirmation_code], function($message) use ($email){
        $message->from('myemail@myserver.com', 'Confirmation')->to($email, $name)->subject('Please verify your email address');
    }); 
    

    【讨论】:

      【解决方案3】:

      你需要使用那些变量

      $email="someemail@gmail.com";
      $name="thename";
      
      \Mail::send('emails.verify', ['confirmation_code' => $user->confirmation_code], function($message) use ($email,$name) {
          $message->from('myemail@myserver.com', 'Confirmation')->to($email, $name)->subject('Please verify your email address');
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-23
        • 2019-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-17
        • 2018-07-19
        相关资源
        最近更新 更多