2016-11-07 75 views
3

我剛剛創建了一個sendgrid帳戶。然後我去設置=> API鍵 ,並點擊「創建API密鑰」,並給了任何可能的權限。Sendgrid API:提供的授權許可無效,已過期或已被撤銷

然後我創建了一個C#項目,添加的NuGet包,並從here

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

     Email from = new Email("[email protected]"); 

     String subject = "Hello World from the SendGrid CSharp Library"; 
     Email to = new Email("[email protected]"); 
     Content content = new Content("text/plain", "Textual content"); 
     Mail mail = new Mail(from, subject, to, content); 
     Email email = new Email("[email protected]"); 
     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(); 
} 

把我寫的Hello世界中的代碼,但我得到

未經授權=>

「 {\「errors \」:[{\「message \」:\「提供的授權許可無效,過期或撤銷\」,\「field \」:null,\「help \」:null}]}


在這個例子中,他們從EnvironmentVariableTarget.User得到了API密鑰是否與它有關?

string apiKey = Environment.GetEnvironmentVariable("NAME_OF_THE_ENVIRONMENT_VARIABLE_FOR_YOUR_SENDGRID_KEY", EnvironmentVariableTarget.User); 
dynamic sg = new SendGridAPIClient(apiKey); 

*的問題是,沒有人讀取消息創建密鑰的時候,也是微軟選擇向我們展示了「API密鑰ID」,這是最糟糕的名字永遠

它不是一個重複,因爲雖然原因是一樣的,但沒有人會猜測它,因爲在c#中我們使用了一個nuget庫,而不是api。

+0

[Send Grid似乎阻止我的節點js服務器發送電子郵件]的可能的副本(http://stackoverflow.com/questions/34789622/send-grid-seems-to-be-preventing-my-node-js -server-sending-emails) – bwest

+0

@bwest它不是重複的,因爲我們使用了nuget庫,而在另一個問題中他們使用了api。所以雖然答案是一樣的,但問題是不同的,沒有人會猜測它,除非他知道問題,或者讀取正確的問題 –

+0

無論語言如何,它都是相同的確切錯誤消息,根本原因和解決方案,因此它是相同的根本問題。這是SO上重複的標準。但是我們會看看mods的功能。 – bwest

回答

2

您的API密鑰有問題。檢查this answer,生成一個新的密鑰,並仔細檢查您的權限。

您也不需要在您的SendGrid.SendGridAPIClient中指定URL。我會刪除該行以減少硬編碼值。

+0

這是正確的。我不知道他們爲什麼這樣做 –

相關問題