/// <summary> /// Sets body data from the specified stream. /// </summary> /// <param name="stream">Source stream.</param> /// <param name="transferEncoding">Specifies content-transfer-encoding to use to encode data.</param> /// <exception cref="ArgumentNullException">Is raised when <b>stream</b> or <b>transferEncoding</b> is null reference.</exception> /// <exception cref="InvalidOperationException">Is raised when this method is accessed and this body is not bounded to any entity.</exception> public void SetData(Stream stream,string transferEncoding) { if(stream == null){ throw new ArgumentNullException("stream"); } if(transferEncoding == null){ throw new ArgumentNullException("transferEncoding"); } if(string.Equals(transferEncoding,MIME_TransferEncodings.QuotedPrintable,StringComparison.InvariantCultureIgnoreCase)){ using(MemoryStreamEx fs = new MemoryStreamEx(32000)){ QuotedPrintableStream encoder = new QuotedPrintableStream(new SmartStream(fs,false),FileAccess.ReadWrite); Net_Utils.StreamCopy(stream,encoder,32000); encoder.Flush(); fs.Position = 0; SetEncodedData(transferEncoding,fs); } } else if(string.Equals(transferEncoding,MIME_TransferEncodings.Base64,StringComparison.InvariantCultureIgnoreCase)){ using(MemoryStreamEx fs = new MemoryStreamEx(32000)){ Base64Stream encoder = new Base64Stream(fs,false,true,FileAccess.ReadWrite); Net_Utils.StreamCopy(stream,encoder,32000); encoder.Finish(); fs.Position = 0; SetEncodedData(transferEncoding,fs); } } else if(string.Equals(transferEncoding,MIME_TransferEncodings.Binary,StringComparison.InvariantCultureIgnoreCase)){ SetEncodedData(transferEncoding,stream); } else if(string.Equals(transferEncoding,MIME_TransferEncodings.EightBit,StringComparison.InvariantCultureIgnoreCase)){ SetEncodedData(transferEncoding,stream); } else if(string.Equals(transferEncoding,MIME_TransferEncodings.SevenBit,StringComparison.InvariantCultureIgnoreCase)){ SetEncodedData(transferEncoding,stream); } else{ throw new NotSupportedException("Not supported Content-Transfer-Encoding '" + transferEncoding + "'."); } }
/// <summary> /// Sets body data from the specified stream. /// </summary> /// <param name="stream">Source stream.</param> /// <param name="transferEncoding">Specifies content-transfer-encoding to use to encode data.</param> /// <exception cref="ArgumentNullException">Is raised when <b>stream</b> or <b>transferEncoding</b> is null reference.</exception> public void SetData(Stream stream,string transferEncoding) { if(stream == null){ throw new ArgumentNullException("stream"); } if(transferEncoding == null){ throw new ArgumentNullException("transferEncoding"); } if(transferEncoding == MIME_TransferEncodings.QuotedPrintable){ using(FileStream fs = File.Create(Path.GetTempFileName())){ QuotedPrintableStream encoder = new QuotedPrintableStream(new SmartStream(fs,false),FileAccess.ReadWrite); Net_Utils.StreamCopy(stream,encoder,32000); encoder.Flush(); fs.Position = 0; SetEncodedData(transferEncoding,fs); } } else if(transferEncoding == MIME_TransferEncodings.Base64){ using(FileStream fs = File.Create(Path.GetTempFileName())){ Base64Stream encoder = new Base64Stream(fs,false,true,FileAccess.ReadWrite); Net_Utils.StreamCopy(stream,encoder,32000); encoder.Finish(); fs.Position = 0; SetEncodedData(transferEncoding,fs); } } else if(transferEncoding == MIME_TransferEncodings.Binary){ SetEncodedData(transferEncoding,stream); } else if(transferEncoding == MIME_TransferEncodings.EightBit){ SetEncodedData(transferEncoding,stream); } else if(transferEncoding == MIME_TransferEncodings.SevenBit){ SetEncodedData(transferEncoding,stream); } else{ throw new NotSupportedException("Not supported Content-Transfer-Encoding '" + transferEncoding + "'."); } }