此代码输出:
Call to a member function link() on a non-object
我想要的是发送电子邮件中的链接。代码有什么问题?感谢
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;
}
}
更新:我收到同样的错误。
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.
}
}
答案 0 :(得分:2)
应该在控制器中有这个:
class UsersController extends AppController {
var $name = 'Users';
var $helpers = array('Html');
var $components = array('Email');
function _email($email_user, $code){
$pwrurl = "http://xxx/users?se=check&mail=".$email_user."&code=".$code;
$this->Email->from = 'From: Someone';
$this->Email->to = $email_user;
$this->Email->subject = 'Your Subject';
$this->Email->sendAs = 'html';
$this->Email->template = 'your_template';
$this->set('pwrurl', $pwrurl);
$this->Email->send();
}
}
然后在views / elements / email / html中创建一个与上述代码中的模板相同的电子邮件模板。对于此示例your_template.ctp。按照您希望的方式撰写邮件以及您希望链接显示的位置使用:
$this->Html->link('Link name', $pwrurl, array('target' => '_blank'));
希望这有帮助。
答案 1 :(得分:1)
来自here:
$pwrurl = '<a href="http://' . $_SERVER['SERVER_NAME'] ."/users/otpregister/".$email_user."&code=".$codeLink.'"> Registration link</a>';
答案 2 :(得分: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;
}
}
因为$helpers
是控制器的有效数据成员,而不是模型。它也是在AppController.php中编写sendEmail()
方法并使用$this->sendEmail($user_email, $code);
This documentation page可能会帮助您实现同样目标。
希望它对你有用。