我已经集成了sendgrid来发送邮件。我还想跟踪用户是否打开了邮件,然后单击邮件内的链接。
这就是我使用sendgrid的原因。
使用它,我可以发送邮件,但不能跟踪邮件状态(是否打开邮件,是否单击链接)。
我尝试了下面的代码发送邮件。
function sendMail($toMails, $body, $subject, $ccMails = array(), $bccMails = array()) {
$ci = &get_instance();
if (empty($toName)) {
$toName = $toMails;
}
$sendMail = $ci->config->item('sendMail');
$email = new \SendGrid\Mail\Mail();
$email->setFrom($ci->config->item('from'), "From User name");
$email->setSubject($subject);
$email->addTos($toMails); //for multiple user pass array with emails and names
$email->addCcs($ccMails);
$email->addBccs($bccMails);
$email->addContent("text/html", $body);
$email->setFooter(false, "", "<strong>If you don't want to receive this type of email in the future, please <a href='http://w3schools.com'>Unsubscribe</a>.</strong>");
//$email->setSpamCheck(true, 1, "http://localhost:8081/");
// Tracking Settings
$email->setClickTracking(true, true);
//$email->setOpenTracking(true, true);
$sendgrid = new \SendGrid($ci->config->item('key'));
try {
$response = $sendgrid->send($email);
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
if ($sendMail) :
if (!$response->statusCode()) :
_pre($response->headers());
return false;
else :
return true;
endif;
endif;
}
可以正常工作,只是它会进入垃圾邮件。
现在下面的代码,我用来获取每个电子邮件ID的详细信息。
$sendgrid = new \SendGrid($this->config->item('key'));
$query_params = json_decode('{"start_date": "2019-10-07","end_date": "2019-10-07","to_email": "cadmin1@getnada.com","subject":"This is a subject test"}');
$response = $sendgrid->client->stats()->get(null, $query_params);
_pre($response->body());
exit;
上面的代码仅提供给我明智的日期数据,但我也希望提供明智的电子邮件ID。
但是尽管为此添加了一个参数,但我仍然没有得到期望的输出。
https://sendgrid.com/docs/for-developers/sending-email/getting-started-email-activity-api/#filter-by-recipient-email
我使用了上面的演示,在该演示中,他们使用了curl,但是我使用的是CodeIgniter。
我不确定sendgrid版本,这就是为什么我同时添加了两个版本标签,我使用了API一。
有人对此有适当的解决方案吗?
答案 0 :(得分:0)
我已经实施了webhooks来存档我的愿望输出。
为此,需要按照documentation shows
之后,需要创建一个页面,我们可以从中获取邮件状态。 在执行该页面时,它会根据活动返回数据。
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: *');
$data = file_get_contents("php://input");
$events = json_encode($data, true);
$requestData = array('response' => $events);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "<url which we earlier set for webhook as per documentation>");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $requestData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec($ch);
curl_close($ch);
?>
我使用了Curl来获取欲望输出。