public void WriteHeaderValue(DateTime value) { this.AssertOpen(); if (this.headerValueWritten) { throw new InvalidOperationException(Strings.CannotWriteHeaderValueMoreThanOnce); } if (this.lastHeader == null) { throw new InvalidOperationException(Strings.CannotWriteHeaderValueHere); } this.headerValueWritten = true; TimeSpan timeZoneOffset = TimeSpan.Zero; DateTime utcDateTime = value.ToUniversalTime(); if (value.Kind != DateTimeKind.Utc) { timeZoneOffset = TimeZoneInfo.Local.GetUtcOffset(value); } Header.WriteName(this.shimStream, this.lastHeader.Name, ref this.scratchBuffer); MimeStringLength mimeStringLength = new MimeStringLength(0); DateHeader.WriteDateHeaderValue(this.shimStream, utcDateTime, timeZoneOffset, ref mimeStringLength); this.lastHeader = null; }
internal override long WriteTo(Stream stream, EncodingOptions encodingOptions, MimeOutputFilter filter, ref MimeStringLength currentLineLength, ref byte[] scratchBuffer) { long num = base.WriteName(stream, ref scratchBuffer); currentLineLength.IncrementBy((int)num); if (!base.IsDirty && base.RawLength != 0 && base.IsProtected) { long num2 = Header.WriteLines(base.Lines, stream); num += num2; currentLineLength.SetAs(0); return(num); } if (!this.parsed) { this.Parse(); } num += DateHeader.WriteDateHeaderValue(stream, this.utcDateTime, this.timeZoneOffset, ref currentLineLength); currentLineLength.SetAs(0); return(num); }