发送带链接的电子邮件

use*_*784 5 php cakephp html-email

此代码输出:

Call to a member function link() on a non-object 
Run Code Online (Sandbox Code Playgroud)

我想要的是通过电子邮件发送链接.代码有什么问题?谢谢

class User extends AppModel {
    public $helpers = array('Html');
    public function sendEmail($email_user, $code) {
            $email = new CakeEmail();
            $email->config('smtp');

            $pwrurl = "http://xxx/users?se=check&mail=".$email_user."&code=".$code;
            $link = $this->Html->link('Link name', $pwrurl, array('target' => '_blank'));
            $email->from(array('xxxn@gmail.com' => 'xxxx'))
            ->to($email_user)
            ->emailFormat('html')
            ->send('My message:: '.$link);
            return true;
        }
}
Run Code Online (Sandbox Code Playgroud)

文档

更新:我得到了同样的错误.

App::uses('CakeEmail', 'Network/Email');
App::uses('AppHelper', 'View/Helper');

class AppController extends Controller {
      public $helpers = array('Form', 'Html');

      public function sendEmail($email_user, $codeLink) {
             //same code.
      }
Run Code Online (Sandbox Code Playgroud)

}

Aru*_*ain 0

您可以尝试使用以下代码来代替上面的代码:

App::uses('HtmlHelper', 'View/Helper');
class User extends AppModel {
public function sendEmail($email_user, $code) {
        $email = new CakeEmail();
        $email->config('smtp');

        $pwrurl = "http://xxx/users?se=check&mail=".$email_user."&code=".$code;
        $link = $this->Html->link('Link name', $pwrurl, array('target' => '_blank'));
        $email->from(array('xxxn@gmail.com' => 'xxxx'))
        ->to($email_user)
        ->emailFormat('html')
        ->send('My message:: '.$link);
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

因为 of$helpers是控制器的有效数据成员,而不是模型的有效数据成员。sendEmail()在 AppController.php 中编写该方法并使用以下命令将此方法调用到控制器的方法中也是一个不错的选择$this->sendEmail($user_email, $code);

此文档页面可能会帮助您实现相同的目标。

希望它对你有用。