在发送网格 API 中实现"/messages"终结点时的授权异常



我正在开发一个jsf + spring应用程序,并尝试使用"/messages"端点获取通过sendgrid api发送的所有电子邮件。

我尝试在 Java 中实现"/messages"端点,类似于此处示例中提到的"/stats"端点。下面是我的代码

我正在应用程序上下文中初始化发送网格对象

<bean id="sendGrid" class="com.sendgrid.SendGrid">
    <constructor-arg name="apiKey" value="my_api_key"/>
</bean>

然后,我在服务 Bean 中使用该对象的自动连线实例,如下所示:

com.sendgrid.Request request = new Request();
try {
   request.setMethod(Method.GET);
   request.setEndpoint("messages");
   request.addQueryParam("limit", "10");
   request.addQueryParam("query", "status='processed'");
   com.sendgrid.Response response=sendGrid.api(request);
   LOGGER.debug(response.getBody());
} catch (IOException e) {
   LOGGER.error(ExceptionUtils.getStackTrace(e));
}

但是,我收到以下异常

堆栈跟踪:

java.io.IOException: Request returned status Code 400 Body:{"errors":[{"message":"authorization required"}]}
at com.sendgrid.Client.executeApiCall(Client.java:287)
at com.sendgrid.Client.get(Client.java:163)
at com.sendgrid.Client.api(Client.java:308)
at com.sendgrid.SendGrid.makeCall(SendGrid.java:203)
at com.sendgrid.SendGrid.api(SendGrid.java:225)

因为我能够成功发送电子邮件和接收统计信息。我认为授权不应该是这里的问题。是我在某处出错了还是错过了什么?

欢迎任何猜测或线索。谢谢

我联系了 sendgrid 支持团队,这是一个 API 密钥问题。由于我正在试用免费帐户,因此我无法访问该特定端点。但是,一旦我升级到带有电子邮件活动附加功能的付费帐户,它就起作用了。

是的,就像Pranay说的那样,您必须购买名为"扩展电子邮件活动历史记录"的附加组件,该附加组件位于(使用发送网格登录后,请查找(
设置→ Account_Details → Product_Page →向下滚动到附加组件→然后选择"扩展电子邮件活动历史记录"并添加到您的计划中。(此附加组件的当前费用为每月 12 美元*,我不明白此处 * 的含义(您可以查看以下链接以获取 sendgrid 代码片段
https://docs.sendgrid.com/api-reference/e-mail-activity/filter-all-messages

希望这有帮助
PK

最新更新