Sendgrid API:提供的授权无效、已过期或已撤销

Ash*_*ous 8 c# sendgrid

我刚刚创建了一个 sendgrid 帐户。然后我转到设置=> API 密钥并单击“创建 API 密钥”并授予任何可能的权限。

然后我创建了 ac# 项目,添加了 nuget 包,并从这里编写了 hello world 代码

 public async Task HelloEmail()
 {
            dynamic sg = new SendGrid.SendGridAPIClient("XXX-XXXXXXXXXXXXXXXXXX", "https://api.sendgrid.com");

        Email from = new Email("MY@Email.com");

        String subject = "Hello World from the SendGrid CSharp Library";
        Email to = new Email("test@example.com");
        Content content = new Content("text/plain", "Textual content");
        Mail mail = new Mail(from, subject, to, content);
        Email email = new Email("test2@example.com");
        mail.Personalization[0].AddTo(email);

        dynamic response = await sg.client.mail.send.post(requestBody: mail.Get());

        var x=response.StatusCode;
        var y = response.Body.ReadAsStringAsync().Result;
        var z = response.Headers.ToString();
 }
Run Code Online (Sandbox Code Playgroud)

但我得到

未经授权=>

"{\"errors\":[{\"message\":\"提供的授权无效、已过期或已撤销\",\"field\":null,\"help\":null}]} ”


在示例中,他们从与EnvironmentVariableTarget.User此相关的 API 密钥中获取 API 密钥吗?

string apiKey = Environment.GetEnvironmentVariable("NAME_OF_THE_ENVIRONMENT_VARIABLE_FOR_YOUR_SENDGRID_KEY", EnvironmentVariableTarget.User);
dynamic sg = new SendGridAPIClient(apiKey);
Run Code Online (Sandbox Code Playgroud)

*问题是创建密钥时没有人读取消息,而且微软选择向我们显示“API Key ID”,这是有史以来最糟糕的名称

它不是重复的,因为虽然原因是相同的,但没有人会猜到,因为在 c# 中我们使用 nuget 库,而不是 api。

bwe*_*est 3

您的 API 密钥有问题。检查此答案,生成新密钥,然后仔细检查您的权限。

您也不需要在SendGrid.SendGridAPIClient. 我会删除该行以减少硬编码值。