wenn ich anfügen versuchen Befehl in C# zu sehen Code:GMail IMAP Anfügen {Länge}
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";
}
Es sagt, BAD nicht Befehl nicht analysieren. Es stürzt auf Encoding.UTF8.GetByteCount (Befehl) ab, es bekommt die Länge 162, aber wenn ich 160 versuche, funktioniert es. Gmail wird einfach nicht zustimmen was ich zähle und dann hört es auf zu arbeiten.
Wie Sie sehen können, habe ich eine Variable n, die Environment.Newline zugewiesen ist. Ich benutze es, bevor ich foo sende. –
Die Sache ist, dass was Leute zählen als 3 Zeichen (foo), Google Mail tut es tatsächliche Zeichen minus 2, dann funktioniert es. –
Ist Environment.Newline variabel abhängig von der Plattform? IMAP sollte IMMER verwenden \ r \ n. – Max