Example #1
0
 public void SetContentType(MajorContentType contentType, MimeString boundaryValue)
 {
     if (contentType == MajorContentType.Multipart) {
         int offset;
         int count;
         var data = boundaryValue.GetData(out offset, out count);
         var numArray = new byte[MimeString.TwoDashes.Length + count + MimeString.TwoDashes.Length];
         var length = MimeString.TwoDashes.Length;
         System.Buffer.BlockCopy(MimeString.TwoDashes, 0, numArray, 0, length);
         System.Buffer.BlockCopy(data, offset, numArray, length, count);
         var num1 = length + count;
         boundaryCrc = Internal.ByteString.ComputeCrc(numArray, 0, num1);
         System.Buffer.BlockCopy(MimeString.TwoDashes, 0, numArray, num1, MimeString.TwoDashes.Length);
         var num2 = num1 + MimeString.TwoDashes.Length;
         endBoundaryCrc = Internal.ByteString.ComputeCrc(numArray, 0, num2);
         this.boundaryValue = new MimeString(numArray, 0, num2);
     } else {
         this.boundaryValue = new MimeString();
         boundaryCrc = 0U;
         endBoundaryCrc = 0U;
     }
     this.ContentType = contentType;
 }
Example #2
0
 private bool IsQuotingRequired(MimeString mimeStr, bool allowUTF8)
 {
     var writeState = WriteState.Begin;
     var mimeString = new MimeString(WordBreakBytes, 0, WordBreakBytes.Length);
     int offset;
     int count;
     var data = mimeStr.GetData(out offset, out count);
     while (count != 0) {
         switch (writeState) {
             case WriteState.Begin:
                 var characterCount = 0;
                 var endOf = MimeScan.FindEndOf(MimeScan.Token.Atom, data, offset, count, out characterCount, allowUTF8);
                 if (endOf == 0) {
                     if (count <= 3 || offset != 0 || !mimeString.HasPrefixEq(data, 0, 3))
                         return true;
                     offset += 3;
                     count -= 3;
                     writeState = WriteState.Begin;
                     continue;
                 }
                 offset += endOf;
                 count -= endOf;
                 writeState = WriteState.Atom;
                 continue;
             case WriteState.Atom:
                 if ((count < 2 || data[offset] != 32) && (count < 1 || data[offset] != 46))
                     return true;
                 ++offset;
                 --count;
                 writeState = WriteState.Begin;
                 continue;
             default:
                 continue;
         }
     }
     return false;
 }