繁体   English   中英

使用 sendgrid API 获取 email 活动时出错

[英]Error when get email activity by using sendgrid API

我想通过使用 Sendgrid API 获得 email 活动,但它不能按收件人和日期范围进行过滤(此代码可以获得 3 个活动,但不能过滤参数:from_email: khoa.do.netlink.vn 而不是范围从日期 - 到日期)。

这是代码:

function filter_activity()
    {
        $apiKey = 'SG.xxx';
        $sg = new \SendGrid($apiKey);

        $str_query = "last_event_time BETWEEN TIMESTAMP '2022-02-13T00:00:00.000Z' AND TIMESTAMP '2022-03-13T00:00:00.000Z' AND from_email='khoa.do@netlink.vn'";

        $query_params = array(
            "query" => $str_query,
            "limit"=> 3
        );


        try
        {
            $response = $sg->client->messages()->get(null, $query_params);
            print $response->statusCode() . "\n";
            print_r($response->headers());
            print $response->body() . "\n";
            var_dump($response->body()); die();
        } 
        catch (Exception $ex) 
        {
            echo 'Caught exception: '.  $ex->getMessage();
        }
    }

我尝试使用 postman,但出现错误:

在此处输入图像描述

如果有人知道这个问题,请告诉我如何输入正确的参数。 感谢您的支持,

我认为这里的问题是您在时间戳中包含了大括号。 文档显示如下:

curl --request GET \
 --url 'https://api.sendgrid.com/v3/messages?limit=10&query=last_event_time%20BETWEEN%20TIMESTAMP%20%22{start_date}%22%20AND%20TIMESTAMP%20%22{end_date}%22' \
 --header 'authorization: Bearer <<your API key>>'

但我认为整个{start_date}{end_date}字符串应该用时间戳替换,而不仅仅是在括号内。

此外,虽然您正在进行的查询可能有很多部分,但它们都作为一个query URL 参数出现。 因此,您需要构建查询,然后对其进行urlencode并将其设置为 URL 中的query参数。

像这样尝试:

function filter_activity()
    {

        $apiKey = 'SG.xxx';
        $sg = new \SendGrid($apiKey);

        $start_date = "2022-03-12T00:00:00.000Z";
        $end_date = "2022-03-13T00:00:00.000Z";

        $str = "BETWEEN TIMESTAMP '".$start_date."' AND TIMESTAMP '".$end_date."'";

        $query_params = array(
            "query" => urlencode('last_event_time="' . $str . '" AND from_email="khoa.do@netlink.vn"'),
            "limit"=> 3
        );

        try
        {
            $response = $sg->client->messages()->get(null, $query_params);
            print $response->statusCode() . "\n";
            print_r($response->headers());
            print $response->body() . "\n";
            var_dump(json_decode($response->body(), true)); die();
        } 
        catch (Exception $ex) 
        {
            echo 'Caught exception: '.  $ex->getMessage();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM