ASP.NET 3.5中的SendGrid Web API

use*_*639 4 c# asp.net sendgrid

我正在使用SendGrid电子邮件服务通过Web API(HttpWebRequest)发送电子邮件.这是我正在使用的代码,但我收到400响应.

string url = "https://sendgrid.com/api/mail.send.xml";
string parameters = "api_user=" + api_user + "&api_key=" + api_key + "&to="                     + toAddress + "&toname=" + toName + "&subject=" + subject + "&text=" + text + "&from=" + fromAddress;

// Create Request
myHttpWebRequest = (HttpWebRequest)HttpWebRequest.Create(url);

myHttpWebRequest.Method = "POST";
// myHttpWebRequest.ContentType = "application/json; charset=utf-8";
myHttpWebRequest.ContentType = "text/xml";

CookieContainer cc = new CookieContainer();
myHttpWebRequest.CookieContainer = cc;

System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
byte[] postByteArray = encoding.GetBytes(parameters);
myHttpWebRequest.ContentLength = postByteArray.Length;
System.IO.Stream postStream = myHttpWebRequest.GetRequestStream();
postStream.Write(postByteArray, 0, postByteArray.Length);
postStream.Close();

// Get Response
string result="";
HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse();
Run Code Online (Sandbox Code Playgroud)

Swi*_*ift 11

您的主要问题是您向我们发送了text/xml内容类型的内容,但我们只接受表单编码内容或查询字符串.这是一个完整的例子,说明你正在尝试做什么.

using System;
using System.IO;
using System.Net;

public class SendGridWebDemo
{
  static public void Main ()
  {
    string api_user = "your_sendgrid_username";
    string api_key = "your_sendgrid_key";
    string toAddress = "to@example.com";
    string toName = "To Name";
    string subject = "A message from SendGrid";
    string text = "Delivered by your friends at SendGrid.";
    string fromAddress = "from@example.com";

    string url = "https://sendgrid.com/api/mail.send.json";

    // Create a form encoded string for the request body
    string parameters = "api_user=" + api_user + "&api_key=" + api_key + "&to=" + toAddress + 
                        "&toname=" + toName + "&subject=" + subject + "&text=" + text + 
                        "&from=" + fromAddress;

    try
    {
      //Create Request
      HttpWebRequest myHttpWebRequest = (HttpWebRequest) HttpWebRequest.Create(url);
      myHttpWebRequest.Method = "POST";
      myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";

      // Create a new write stream for the POST body
      StreamWriter streamWriter = new StreamWriter(myHttpWebRequest.GetRequestStream());

      // Write the parameters to the stream
      streamWriter.Write(parameters);
      streamWriter.Flush();
      streamWriter.Close();

      // Get the response
      HttpWebResponse httpResponse = (HttpWebResponse) myHttpWebRequest.GetResponse();

      // Create a new read stream for the response body and read it
      StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream());
      string result = streamReader.ReadToEnd();

      // Write the results to the console
      Console.WriteLine(result);
    }
    catch(WebException ex)
    {
      // Catch any execptions and gather the response
      HttpWebResponse response = (HttpWebResponse) ex.Response;

      // Create a new read stream for the exception body and read it
      StreamReader streamReader = new StreamReader(response.GetResponseStream());
      string result = streamReader.ReadToEnd();

      // Write the results to the console
      Console.WriteLine(result);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)