【问题标题】:Create a draft mail using google gmail API with asp.net WebForms (without libraries)使用带有 asp.net WebForms 的 google gmail API 创建草稿邮件(无库)
【发布时间】:2021-04-27 00:40:47
【问题描述】:

我正在尝试使用 Gmail API 创建和发送电子邮件草稿。 一周多来,我查看了文档和一些论坛帖子,试图解决这个问题,但我不知道我做错了什么。

这是我用来完成这项工作的最后修改代码:

string URL = "https://gmail.googleapis.com/upload/gmail/v1/users/" + usrEmail + "/drafts?access_token=" + hdfToken.Value;
        string mBody = "From: " + txbMail.Text + "\nTo: " + txbDest.Text + "\nSubject: " + txbAssunto.Text + "\n\r\n" + txbMsg.Text + "";
        string payload = "{\"message\": {\"raw\": \"" + Base64Encode(mBody) + "\"}}";
        using (var client = new HttpClient())
        {
            var content = new StringContent(payload, Encoding.Default, "message/rfc822");

            var response = client.PostAsync($"" + URL, content).Result;
            string resultContent = response.Content.ReadAsStringAsync().Result;
            JObject jsonObject = JObject.Parse(resultContent);
            string draftID = jsonObject["id"].ToString();
            hdfID.Value = draftID;
            lblID.Text = "#ID: |" + draftID + "|<br>";
            //return resultContent;
        }

这里是对发送的内容进行编码的方法:

public static string Base64Encode(string plainText)
    {
        var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
        return System.Convert.ToBase64String(plainTextBytes).Replace('+', '-').Replace('/', '_').Replace("=", "");
    }

我可以创建草稿,但它总是被创建为空的。但是,如果我复制发送的内容(名为“payload”的字符串)并将其放入 Google 测试页面(https://developers.google.com/gmail/api/reference/rest/v1/users.drafts/create),草稿将正确创建 -> 带有发件人电子邮件地址、电子邮件主题、电子邮件正文和我发送的收件人电子邮件地址。 我无法弄清楚我在这里做错了什么,所以我来这里寻求您的帮助。

此代码在 ASP.NET C# webforms 页面中执行。有什么想法吗?

***更新内容如下: 我创建了一个简单的表单来测试 API 并提交了表单。让我们看看数据: Simple Form created to test

在我的草稿文件夹中,结果如下: Empty Draft Message created by my form

一个空的草稿... 如果我复制发送的内容并将其粘贴到测试表上: Google Test API

创建草稿时填写正确的字段: Draft Message with filled fields

这让我快疯了,哈哈。

【问题讨论】:

  • @mason 谢谢你的话。我会用正确的描述更新我的问题。
  • 您是否将Base64Encode() 函数的结果与您在 Try this API 上使用的结果进行了比较?您是否在发送消息之前通过记录检查是否有不同之处?
  • 嗨凯西。是的,我做到了。我将用我所做的一些测试来更新帖子。如果我复制结果并将其粘贴到测试页上,我的草稿将使用正确的信息创建。

标签: c# asp.net google-api http-post gmail-api


【解决方案1】:

我刚刚发现了问题。 我使用了错误的 URL 来发布我的数据。 执行此操作的正确网址是: https://gmail.googleapis.com/gmail/v1/users/{userId}/drafts

【讨论】:

    猜你喜欢
    • 2018-04-19
    • 2014-10-19
    • 1970-01-01
    • 2016-09-27
    • 2018-02-20
    • 1970-01-01
    • 2023-03-20
    • 2011-11-23
    • 2019-12-06
    相关资源
    最近更新 更多