是否阅读电子邮件|在CodeIgniter中

时间:2018-10-16 11:30:25

标签: codeigniter wiki

我想知道此人是否阅读邮件。 如果用户单击邮件内的链接,它会很好地工作。 但是我想使其在没有链接的情况下工作,因此我必须添加图片<img>。 但是在这种情况下不起作用。

  $message = '<p> confirm </p> <img src="'. base_url().'Email/Track_Open_Email/'.$toEmail.'" width="80" height="80" />';
//Email{Controller}/Track_Open_Email{Method}/toEmail{First Param}

电子邮件控制器中的Track_Open_Email函数

 public function Track_Open_Email ($email)
   {  
    $this->Email_model->Set_Track_Open_Email($email , $data);
     }// from here will go to Email model

1 个答案:

答案 0 :(得分:0)

在CI中将参数作为URI元素传递不会自动将其转换为函数期望的变量。

我建议这样做:

position =

请注意,此确切的代码需要预先加载url帮助器,并有一个小警告:由于您仅检查电子邮件地址,因此,如果您有多封不同的电子邮件发送给同一收件人,则阅读其中将标记所有他们读过。

我的建议是在每个不同的邮件上传递另一个参数(例如public function Track_Open_Email ($email) { // this will take https://domain.tld/controller/track_open_email/email_address and assign email_address to $email: $email = $this->uri->segment(3); $this->Email_model->Set_Track_Open_Email($email , $data); } ),以便通过解析<img src="'. base_url().'Email/Track_Open_Email/'.$toEmail.'/.$email_id.'" width="80" height="80" />$this->uri->segment(3)并将它们分配给单独的值,您只能标记该特定邮件为已读:

$this->uri->segment(4)

最后,在模型中,同时使用两个参数来运行更新查询(您将以public function Track_Open_Email ($email) { // this will take https://domain.tld/controller/track_open_email/email_address/email_id and assign email_address to $email: $email = $this->uri->segment(3); $email_id = $this->uri->segment(4); // now pass both params to the Set_Track_Open_Email model: $params = array('email'=>$email, 'email_id'=>$email_id); $this->Email_model->Set_Track_Open_Email($params , $data); } $params['email']的形式访问它们,并仅标记该特定用户阅读了特定的电子邮件。

为清楚起见:$params['email_id']的值应唯一标识“广告系列”(缺少更好的单词)。因此,如果今天您向所有10,000个用户发送一封电子邮件,通知他们某事,那么发送的这10,000封电子邮件将具有相同的email_id(可以是任意值:随机数,带有发送日期的哈希或其他任何形式的消息)电子邮件相同)。如果明天您再向用户发送一封电子邮件,则该电子邮件将具有不同的email_id。 你能做到什么?如果我阅读了您的第一封邮件,则只会被标记为已阅读第一封邮件,而不是两者都被标记为。第二个好处是您可以分别跟踪每个邮件的打开率。

相关问题