我想知道此人是否阅读邮件。
如果用户单击邮件内的链接,它会很好地工作。
但是我想使其在没有链接的情况下工作,因此我必须添加图片<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
答案 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。
你能做到什么?如果我阅读了您的第一封邮件,则只会被标记为已阅读第一封邮件,而不是两者都被标记为。第二个好处是您可以分别跟踪每个邮件的打开率。