1

我可以发送空的时事通讯。但我不知道如何向它们添加内容。Mailjet ( http://dev.mailjet.com/guides/newsletter-guide/ ) 给出的示例并没有多大帮助。大多数时候我都会收到 500 内部服务器错误。

调用方法:

NewsLetterHtmlAdd newsLetterAdd = new NewsLetterHtmlAdd
        {
            ID = idNewsletter,
            Data = string.Format("<!DOCTYPE html" +
                                 "<html>" +
                                 "<head>" +
                                 "<meta content='text/html; charset=utf-8' http-equiv='Content-Type' />" +
                                 "<title>Subject</title>" +
                                 "</head>" +
                                 "<body>" +
                                 "<p style='text-align: center'>Sender <a href='mailto:[[EMAIL_TO]]'>[[EMAIL_TO]]</a>, " + "<a href='[[UNSUB_LINK_EN]]'>Unsubscribe here</a>.</p>"
                                 +
                                 "</body>" +
                                 "</html>")
        };
client.NewsLetterHtmlAdd(newsLetterAdd);

方法:

    public void NewsLetterHtmlAdd(NewsLetterHtmlAdd newsLetterHtmlAdd)
    {
string url = "https://api.mailjet.com/v3/DATA/NewsLetter/"
                     + newsLetterHtmlAdd.ID + "/HTML/text/html/";



        byte[] byteArray = new byte[newsLetterHtmlAdd.Data.Length*sizeof (char)];
        Buffer.BlockCopy(newsLetterHtmlAdd.Data.ToCharArray(), 0, byteArray, 0, byteArray.Length);
        WebRequest request = WebRequest.Create(url);
        request.Credentials = new NetworkCredential(_apiKey, _secretKey);
        request.Method = "POST";
        request.ContentLength = byteArray.Length;
        request.ContentType = "text/html";
        Stream dataStream = request.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();
        WebResponse response = request.GetResponse();
    }

视图模型:

using System.Runtime.Serialization;

namespace MailJet.Newsletter
{  [DataContract] 
public class NewsLetterHtmlAdd
{

[DataMember(Name = "id")]
public long ID { get; set; }


[DataMember(Name = "data")]
public string Data { get; set; }
}
}
4

2 回答 2

2

这是对我有用的方法。我使用服务堆栈。

    public void NewsLetterHtmlAdd(NewsLetterHtmlAdd newsLetterHtmlAdd)
    {
        string url = "https://api.mailjet.com/v3/DATA/NewsLetter/" + newsLetterHtmlAdd.ID + "/HTML/text/html/";

        url.PostToUrl(newsLetterHtmlAdd.Data, "text/html; charset=utf-8",
              request =>
              {
                  request.Credentials = new NetworkCredential(_apiKey, _secretKey);
                  request.ContentType = "text/html; charset=utf-8";
              });

    } 
于 2014-10-02T08:59:18.010 回答
0

看起来好像您正在尝试对 /DATA/newsletter 资源执行 GET 请求。您需要做的是使用请求正文中的 HTML 内容发出 POST 请求。

于 2014-09-17T13:21:05.237 回答