в массив байтов Encoding enc
// конвертируем строки в массив байтов Encoding enc = Encoding.ASCII; byte [] b = enc.GetBytes(message); cs.Write(b, 0, b.Length);
cs.Close(); string t = Utils.GetEncoding(Charset).GetString(tf.ToArray()); tf.Close(); return t; } /// <summary> /// Конструктор. /// </summary> /// <param name="parent">Родительский провайдер.</param> /// <param name="message">Текст, содержащий сообщение.</param> internal Common(Provider parent, string message) { if (parent == null) { throw new ArgumentNullException("parent"); } if (message == String.Empty) { throw new ArgumentException("empty string", "message"); }
int end = FillHeaders(message); _size = message.Length;
// исключаем заголовок из тела сообщения _message = message.Substring(end); _pop3 = parent; }
/// <summary> /// Выбираем все заголовки и заполняем массив. /// </summary> /// <returns></returns> internal int FillHeaders(string message) { int start = 0; //message.IndexOf(CRLF) + CRLF.Length; //пропускаем 2 байта int headerend = message.IndexOf(DCRLF); string headers = message.Substring(start, headerend - start); GetHeaders(headers);
// пропускаем секцию заголовков headerend += DCRLF.Length;
return headerend; }
/// <summary> /// Заполнение <see cref="Mime"/> массива. /// </summary> /// <returns></returns> protected bool MultipartMixed() { string b = GetBoundary(); if (b == String.Empty) return false;
int s = _message.IndexOf(b); if (s < 0) { throw new ParseException("Can't find beginning MIME boundary: " + b); }
ArrayList tmimes = new ArrayList();
while(true) { s += b.Length + CRLF.Length;
int e = _message.IndexOf(b, s); if (e < 0) { if (_message.IndexOf(MIMEE, s - CRLF.Length, MIMEE.Length) < 0) { throw new ParseException("Неправильный MIME"); }
break; }
tmimes.Add(new Mime(_pop3, _message.Substring(s, e - s - CRLF.Length))); s = e; }