0
私はC#でコマンドを追加しようとすると、コードを参照してください。それはBADコマンドを解析できなかった、と言うGmailのIMAP追加{}な長さ
private readonly string n = Environment.NewLine;
public string CreateDraft()
{
string output;
string command = "MIME-Version: 1.0" + n +
"From: [email protected]" + n +
"To: [email protected]" + 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";
}
を。 Encoding.UTF8.GetByteCount(コマンド)でクラッシュしますが、長さは162になりますが、160を試しても機能します。 GMAILはちょうど私が数えているものに同意しないでしょう、そしてそれは働くのを止めます。
ご覧のとおり、変数nにはEnvironment.Newlineが割り当てられています。私はfooを送る前にそれを使う。 –
これは、3文字(foo)とみなす人は、実際の文字から2を引いたものです。 –
Environment.Newline変数はプラットフォームによって異なりますか? IMAPは常に\ r \ nを使用する必要があります。 – Max