Mailkit POP3:获取没有标题的附件文本

时间:2018-03-11 15:24:06

标签: vb.net email-attachments pop3 mailkit mimekit

我下载了附带CSV文件的POP3消息。 我需要在附件中获取纯文本,我这样做:

For Each BP As MimeKit.MimeEntity In Msg.BodyParts
   'Filtering:
   If Not BP.IsAttachment = True Then Continue For
   If Not BP.ContentDisposition.FileName.EndsWith(".csv") Then Continue For

   Console.WriteLine((DirectCast(BP, MimeKit.TextPart).Text))
Next

这项工作如果

BP.ContentType.MediaType = "text"
BP.ContentType.MimeType = "csv"

但是,例如MediaType = application我无法将BodyPart转换为TextPart并访问.Text媒体资源。

我可以使用BP.ToString获取完整的附件 - 文本,但它会返回所有内容。头:

Content-Type: application/vnd.ms-excel;
name="MyFile.csv"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
filename="MyFile.csv"

2018-03-10 10:12;0.797;m3/h;1.8;-0.3;1.8;m3;0.000;0.000;96;5346=0A=
2018-03-10 10:13;0.820;m3/h;1.8;-0.3;1.8;m3;0.000;0.000;96;5346=0A=
2018-03-10 10:14;0.868;m3/h;1.9;-0.3;1.9;m3;0.000;0.000;96;5346=0A=
2018-03-10 10:15;0.549;m3/h;1.9;-0.3;1.9;m3;0.000;0.000;96;5346=0A=
2018-03-10 10:16;0.281;m3/h;1.9;-0.3;1.9;m3;0.000;0.000;96;5346=0A=

1:无论ContentType..

中的值如何,我如何获取bodypart的附件文本?

2:在进行过滤之前,我下载了整个邮件/附件。如何仅下载要在过滤中使用的附件标题?

1 个答案:

答案 0 :(得分:1)

获取MimePart内容的一般方式在c#中看起来像这样(抱歉,我不知道VB):

using (var memory = new MemoryStream ()) {
    part.Content.DecodeTo (memory);

    var buffer = memory.ToArray ();
    var text = Encoding.UTF8.GetString (buffer);
}