HTML5技术

跨平台的.NET邮件协议MailKit组件解析 - 彭泽0902(2)

字号+ 作者:H5之家 来源:H5之家 2017-03-17 13:01 我要评论( )

public static MimeMessage Load (ParserOptions options, Stream stream, bool persistent, CancellationToken cancellationToken = default (CancellationToken)){ if (options == null ) throw new ArgumentNull

public static MimeMessage Load (ParserOptions options, Stream stream, bool persistent,
CancellationToken cancellationToken = default (CancellationToken)) { if (options == null) throw new ArgumentNullException (nameof (options)); if (stream == null) throw new ArgumentNullException (nameof (stream)); var parser = new MimeParser (options, stream, MimeFormat.Entity, persistent); return parser.ParseMessage (cancellationToken); }

     该方法从指定的流加载MimeMessage,具有6个方法重载。该方法返回一个MimeMessage对象,有源码可以看出,在该方法内部创建了一个MimeParser对象,MimeParser包含内容(例如邮件正文文本或附件)的叶节点MIME部分。调用ParseMessage方法,解析来自流的消息。

   2.TextPart.Text:

public string Text { get { if (ContentObject == null) return string.Empty; ]; using (var memory = new MemoryStream ()) { ContentObject.DecodeTo (memory); var content = memory.ToArray (); Encoding encoding = null; if (charset != null) { try { encoding = CharsetUtils.GetEncoding (charset); } catch (NotSupportedException) { } } if (encoding == null) { try { return CharsetUtils.UTF8.GetString (content, 0, (int) memory.Length); } catch (DecoderFallbackException) { encoding = CharsetUtils.Latin1; } } return encoding.GetString (content, 0, (int) memory.Length); } } set { SetText (Encoding.UTF8, value); } }

    该属性获取解码的文本内容。该属性是一个可读可写的属性。ContentType.Parameters["charset"]用于获取charset参数的值。该方法用来将参数的值设置为数据流并设置对应的编码。看到这里的异常处理结构,就想简单的谈几句,.NET的异常比较的薄弱,很多时候在写.NET的异常时就更加的简单,以上是对异常知识捕获,有些地方并没有做处理,有些地方是对异常的地方进行恢复。

   3.MimeEntity.WriteTo():

WriteTo (FormatOptions options, Stream stream, bool contentOnly,
CancellationToken cancellationToken = default (CancellationToken)) { if (options == null) throw new ArgumentNullException (nameof (options)); if (stream == null) throw new ArgumentNullException (nameof (stream)); if (!contentOnly) Headers.WriteTo (options, stream, cancellationToken); }

    该方法将MimeEntity写入到指定的数据流中,该方法接受参数options格式选项。stream输出数据流,contentOnly判断是否可写。该方法定义为虚方法,在继承此方法后,可以在子类种对该方法进行重写。

四.总结

   本人觉得在项目开发中,如果引入了第三方组件,我们尽量引入组件的源码,这样我们对整个组件的结构有一个认识,组件的实现方式我们也可以进行细致了解,尤其是我们在进行调试的事后更加有用,我们可以逐一的进行断点调试。以上是对该组件的一个简单介绍,有兴趣的可以去深入的了解和学习。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 一份关于组建.NET Core开源团队的倡议书 - 彭泽0902

    一份关于组建.NET Core开源团队的倡议书 - 彭泽0902

    2017-03-13 17:02

  • 南京.NET技术行业落地分享交流会圆满成功 - 徐龙的博客

    南京.NET技术行业落地分享交流会圆满成功 - 徐龙的博客

    2017-03-13 09:00

  • JavaWeb与Asp.net工作原理比较分析 - 社会主义接班人

    JavaWeb与Asp.net工作原理比较分析 - 社会主义接班人

    2017-03-12 14:00

  • 推荐15个很优秀的跨平台的移动开发工具 - 梦想天空(山边小溪)

    推荐15个很优秀的跨平台的移动开发工具 - 梦想天空(山边小溪)

    2017-03-12 13:02

网友点评
<