public void DecodeStringTest1() { string quoted = $"1=0D=0AFirmenstra=C3=9Fe=0D=0AOrt Firma, Bundesland Firma PLZFirma=0D=0ALand={Environment.NewLine} Firma"; string?s = QuotedPrintableConverter.Decode(quoted); Assert.IsNotNull(s); StringAssert.Contains(s, "Firmenstraße"); StringAssert.EndsWith(s, " Firma"); }
/// <summary> /// Dekodiert Quoted-Printable kodierten Text, der sich in <see cref="Value"/> befindet, wenn /// <see cref="VCards.Models.PropertyParts.ParameterSection.Encoding"/> /// gleich <see cref="VCdEncoding.QuotedPrintable"/> ist. /// </summary> internal void DecodeQuotedPrintable() { if (this.Parameters.Encoding == VCdEncoding.QuotedPrintable && !_quotedPrintableDecoded) { this.Value = QuotedPrintableConverter.Decode(this.Value, // null-Prüfung nicht erforderlich TextEncodingConverter.GetEncoding(this.Parameters.Charset)); // null-Prüfung nicht erforderlich _quotedPrintableDecoded = true; // Encoding nicht 2x durchführen } }
public void QuotedPrintableConverter_Decode() { var qc = new QuotedPrintableConverter(2000, QuotedPrintableConvertMode.Default); qc.InsertNewline = true; var text = "=1B$B5@1`@:<K$N>b$N@<=1B(B=0D=0A=1B$B=3Dt9TL5>o$N6A$-$\"$j=1B(B=0D=0A=1B$B:=" + Environment.NewLine + ";MeAP<y$N2V$N?'=1B(B=0D=0A=1B$B@9<TI,?j$NM}$r$\"$i$o$9=1B(B=0D=0A"; var bb = qc.Decode(Encoding.UTF8.GetBytes(text)); var decodedText = Encoding.GetEncoding("Iso-2022-JP").GetString(bb); Assert.AreEqual(BodyText, decodedText); }
public void QuotedPrintableConverter_Decode_1() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var qc = new QuotedPrintableConverter(2000, QuotedPrintableConvertMode.Default); qc.InsertNewline = true; var text = "https://join.slack.com/t/team/invite/MjM1ODAzMTM3MDc2LTE1MDQ0OTk3NDItODMzYmU4MWEwOQ?x=x-39652798756-2358031371"; var bb = qc.Decode(Encoding.UTF8.GetBytes(text)); var decodedText = Encoding.GetEncoding("iso-2022-JP").GetString(bb); Assert.AreEqual("https://join.slack.com/t/team/invite/MjM1ODAzMTM3MDc2LTE1MDQ0OTk3NDItODMzYmU4MWEwOQ?x=x-39652798756-2358031371", decodedText); }
public void QuotedPrintableConverter_Encode_InsertNewline() { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); var qc = new QuotedPrintableConverter(2000, QuotedPrintableConvertMode.Default); qc.InsertNewline = true; var bb = qc.Encode(Encoding.GetEncoding("Iso-2022-JP").GetBytes(BodyText)); var encodedText = Encoding.UTF8.GetString(bb); Assert.AreEqual("=1B$B5@1`@:<K$N>b$N@<=1B(B=0D=0A=1B$B=3Dt9TL5>o$N6A$-$\"$j=1B(B=0D=0A=1B$B:=" + Environment.NewLine + ";MeAP<y$N2V$N?'=1B(B=0D=0A=1B$B@9<TI,?j$NM}$r$\"$i$o$9=1B(B=0D=0A", encodedText); }
public MimeWriter(Stream stream) { _Stream = stream; _Base64HeaderConverter = new Base64Converter(200); _Base64HeaderConverter.InsertNewline = false; _Base64BodyConverter = new Base64Converter(12000); _Base64BodyConverter.InsertNewline = true; _QuotedPrintableHeaderConverter = new QuotedPrintableConverter(200, QuotedPrintableConvertMode.Header); _QuotedPrintableHeaderConverter.InsertNewline = false; _QuotedPrintableBodyConverter = new QuotedPrintableConverter(2000, QuotedPrintableConvertMode.Default); this.HeaderEncoding = Default.HeaderEncoding; this.HeaderRfc2047Encoding = Default.HeaderRfc2047Encoding; this.FileNameEncoding = Default.FileNameEncoding; this.MimeHeaderParameterEncoding = Default.MimeHeaderParameterEncoding; if (_Initialize != null) { _Initialize(this); } }
/// <summary> /// Get decoded BodyData by ContentTransferEncoding /// </summary> /// <returns></returns> public Byte[] GetDecodedData() { Byte[] bb = this.BodyData; if (bb == null) { throw new InvalidOperationException("BodyData is not loaded.Please ensure to set MimeParser.Filter.LoadContentBodyData = true when you download mail."); } if (this.ContentTransferEncoding == TransferEncoding.Base64) { var cv = new Base64Converter(9000); bb = cv.Decode(bb); } else if (this.ContentTransferEncoding == TransferEncoding.QuotedPrintable) { var cv = new QuotedPrintableConverter(9000, QuotedPrintableConvertMode.Default); bb = cv.Decode(bb); } return(bb); }
public void Decode() { string quoted = $"1=0D=0AFirmenstra=C3=9Fe=0D=0AOrt Firma, Bundesland Firma PLZFirma=0D=0ALand={Environment.NewLine} Firma"; _ = QuotedPrintableConverter.Decode(quoted); }
private void Write(Stream stream, SmtpContent content) { var ct = content; ThrowExceptionIfValueIsNull(this.HeaderEncoding, "You must set HeaderEncoding property of SmtpContent object."); ThrowExceptionIfValueIsNull(ct.ContentDisposition, "You must set ContentDisposition property of SmtpContent object."); ThrowExceptionIfValueIsNull(ct.ContentType, "You must set ContentType property of SmtpContent object."); ThrowExceptionIfValueIsNull(ct.ContentType.CharsetEncoding, "You must set CharsetEncoding property of ContentType property of SmtpContent object."); foreach (var header in ct.Headers) { this.WriteHeader(stream, header.Key, header.Value); } if (ct.ContentType.IsMultipart == true && String.IsNullOrEmpty(ct.ContentType.Boundary) == true) { ct.ContentType.Boundary = MimeWriter.GenerateBoundary(); } this.WriteEncodedHeader(stream, ct.ContentType); this.WriteEncodedHeader(stream, ct.ContentDisposition); stream.Write(ByteData.NewLine); if (ct.ContentType.IsMultipart == true) { var boundary = ct.ContentType.CharsetEncoding.GetBytes("--" + ct.ContentType.Boundary + "\r\n"); for (int i = 0; i < ct.Contents.Count; i++) { stream.Write(boundary); Write(stream, ct.Contents[i]); } stream.Write(ct.ContentType.CharsetEncoding.GetBytes("--" + ct.ContentType.Boundary + "--\r\n")); } else { if (ct.ContentType.IsText == true && String.IsNullOrEmpty(ct.BodyText) == false) { this.WriteEncodedBodyText(stream, ct.BodyText, ct.ContentTransferEncoding, ct.ContentType.CharsetEncoding, 74); } else if (ct.BodyData != null) { Byte[] bb = null; switch (ct.ContentTransferEncoding) { case TransferEncoding.Base64: { var converter = new Base64Converter(ct.BodyData.Length); bb = converter.Encode(ct.BodyData); } break; case TransferEncoding.QuotedPrintable: { var converter = new QuotedPrintableConverter(ct.BodyData.Length, QuotedPrintableConvertMode.Default); bb = converter.Encode(ct.BodyData); } break; case TransferEncoding.None: case TransferEncoding.SevenBit: case TransferEncoding.EightBit: case TransferEncoding.Binary: default: throw new InvalidOperationException(); } stream.Write(bb, 0, bb.Length); stream.Write(ByteData.NewLine); } } }
public void EncodeStringTest1(string?quoted) => Assert.AreEqual(string.Empty, QuotedPrintableConverter.Encode(quoted, 0));
public void DecodeDataTest1(string?quoted) { byte[] data = QuotedPrintableConverter.DecodeData(quoted); Assert.IsNotNull(data); Assert.AreEqual(0, data.Length); }
public void DecodeStringTest2(string?quoted) => Assert.IsNull(QuotedPrintableConverter.Decode(quoted));