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

Read Email or Not | in CodeIgniter

我想知道这个人是否阅读了邮件.. 如果人们点击邮件中的 link,效果会很好。 但是我想让它在没有 link 的情况下工作,所以我必须添加一张图片 <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

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

我建议:

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);
}

请注意,这个确切的代码需要预先加载 url 帮助程序,并且有一个小警告:由于您只是检查电子邮件地址,如果您有多个不同的电子邮件发送给同一个收件人,阅读一个会将所有的标记为已读。

我的建议是在每个不同的邮件上传递另一个参数(例如 <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'] 的形式访问它们,并仅标记特定的电子邮件已被特定的人阅读用户。

为清楚起见:$email_id 应该有一个唯一标识 "campaign" 的值,因为缺少更好的词。因此,如果今天您向所有 10,000 个用户发送一封电子邮件,通知他们一些事情,那么发送的这 10,000 封电子邮件将具有相同的 email_id(它可以是任何东西:随机数、带有发送日期的哈希值,或任何只要没有其他电子邮件具有相同的)。如果您明天向您的用户发送另一封电子邮件,该电子邮件将具有不同的 email_id。 你用它完成了什么?如果我阅读了您的第一封邮件,我只会被标记为已阅读第一封邮件,而不是两者。第二个好处是您可以分别跟踪每封邮件的打开率。