当前位置: 首页 > 知识库问答 >
问题:

GMailIMAP附加{长度}

武晨
2023-03-14

当我在C#中尝试append命令时,请参见代码:

private readonly string n = Environment.NewLine;
public string CreateDraft()
    {
        string output;
        string command = "MIME-Version: 1.0" + n +
                         "From: username@gmail.com" + n +
                         "To: username@gmail.com" + n +
                         "Subject: " + machineId + n +
                         "Content-Type: text/plain; charset=utf-8" + n +
                         "TESTING" + n;
        output =  ReceiveResponse("$$ APPEND [Gmail]/Drafts (\\Draft) {" +      Encoding.UTF8.GetByteCount(command) + "}" + n);

        output += n + ReceiveResponse(command);

        return output;
    }

private string ReceiveResponse(string command)
    {
        try
        {
            if (InternetIsConnected() == true)
            {
                if (!(tcpc.Connected))
                {
                    Connect();
                }

                if (tcpc.Connected)
                {
                    dummy = Encoding.ASCII.GetBytes(command);
                    ssl.Write(dummy, 0, dummy.Length);
                    ssl.Flush();

                    response = "";

                    do
                    {
                        bytes = ssl.Read(buffer, 0, buffer.Length);
                        Decoder decoder = Encoding.UTF8.GetDecoder();
                        char[] chars = new char[decoder.GetCharCount(buffer, 0, bytes)];
                        decoder.GetChars(buffer, 0, bytes, chars, 0);

                        response += new string(chars);
                    } while (response.Contains("$$") == false && (response.Contains("+") == false));

                    return response;
                }

                return "Failure: Terminal Disconnected";
            }
        }
        catch (Exception ex)
        {
        }

        return "Failure";
    }

它说,BAD无法解析命令。它在<code>Encoding.UTF8.GetByteCount(命令)</code>时崩溃,它得到了162个长度,但当我尝试160个时,它工作正常。GMAIL只是不同意我的计算,然后它就停止工作了。

共有1个答案

李振国
2023-03-14

你的命令实际上是错误的;您必须先发送文本,然后发送CRLF,然后等待服务器告诉您发送更多,然后发送正文。

像< code>{3}foo这样的是错的,应该是< code>{3}\r\n,等服务器告诉你继续,< code>foo。

 类似资料:
  • 问题是: 我需要对一个大日志文件的每一行应用多个正则表达式(比如几GB长),收集非空匹配并将它们全部放入一个数组中(用于序列化并通过网络发送)。 如果这个问题的答案是正确的,那么切片并没有多大帮助: 如果片没有足够的容量,append将需要分配新内存并复制旧内存。用于切片 因为可以有几十万个正则表达式匹配,所以我无法真正预测一个片段的长度/容量。我也不能让它太大,“以防万一”bc这会浪费内存(或者

  • 在Ruby中, 可以使用库来添加新的类,模块或方法. 下列就是标准发布包中附加库的一览表. 读取库时需要使用require或load. 附加库一览表 文本 /文件 /网络 /输入输出 /日语 /数学 /数据库 /画面控制/CUI /GUI /日期·时间 /多线程·同步 /Unix /MS Windows /正则表达式 /GC /Design Pattern /开发工具 /命令行 /其他 Engli

  • 问题内容: 问题: 我需要将多个正则表达式应用于大日志文件的每一行(例如几GB长),收集非空匹配项并将其全部放入数组中(用于序列化并通过网络发送)。 如果对此问题的答案成立,切片没有多大帮助: 如果分片没有足够的容量,则append将需要分配新的内存并复制旧的内存。对于具有<1024个元素的片,它将使容量加倍;对于具有> 1024个元素的片,它将使容量增加1.25倍。 由于实际上可以有成千上万个正

  • 问题内容: 我正在尝试构建一个应用程序,该应用程序粘贴上一个活动的输入(工作正常),然后向我展示数据库中的某些内容(按ButtonGet时)。问题是,当我尝试运行项目时,我得到了 。我的代码有什么问题? 问题答案: 在您的onCreate中,您要调用super.onCreate()两次,还要调用setContentView()两次。我很确定那不是您想要的。

  • 本文向大家介绍Prolog附加/ 3,包括了Prolog附加/ 3的使用技巧和注意事项,需要的朋友参考一下 示例 append/3是最知名的Prolog关系之一。它定义了三个参数之间的关系和为真,如果在第三个参数是表示在第一和第二参数指定的列表的级联列表。 值得注意的是,和是典型的好Prolog的代码,append/3可以在使用几个方向:它可用于: 追加两个完全或部分实例化的列表: 检查的关系是否

  • 根据你使用 Jekyll 的不同方式,Jekyll 允许你安装一些可选的附加功能。 数学支持 使用 Kramdown 时可以选择使用由 MathJax 提供的 LaTeX 格式到 PNG 格式的数学区块渲染器。具体细节可查阅 Kramdown 文档中的 math blocks (数学区块) 以及 math support (数学支持) 部分。 使用 MathJax 需要你设置引用相关的 JavaS