【发布时间】:2017-01-05 00:03:24
【问题描述】:
我正在使用 Microsoft Visual Studio 2015,我正在尝试将某些内容从列表形式转换为字符串形式。我已经找到了一些类似问题的解决方案,但不是这个问题。
我希望最终让这段代码工作:
Dim info As Byte() = New UTF8Encoding(True).GetBytes(Utilities.GetEmailInfo(msg.Message).Attachments)
我的最终游戏是从附件中获取文本并将其写入文件。如果我使用下面列出的一些其他数据类型,例如 ToData,文件会正确显示,但上面的代码会出现错误,因为 GetBytes 无法从列表中获取文本。我可以使用其他函数从列表中获取文本吗?
我需要转换的类包含以下内容:
Public Class EmailInfo
Public FromData As String = vbNullString 'FROM:
Public ToData As String = vbNullString 'TO:
Public DateData As String = vbNullString 'DATE:
Public SubjectData As String = vbNullString 'SUBJECT:
Public MessageBody As EmailItem 'contents of message body
Public AlternateViews As New Collections.Generic.List(Of EmailItem) 'list of alternate views
Public Attachments As New Collections.Generic.List(Of EmailItem) 'list of attachments
End Class
我要访问的资源是 EmailInfo.Attachments。此资源存储为 EmailItem 类型的列表。该类型的代码如下:
Public Class EmailItem
Public ContentType As String = vbNullString 'CONTENT-TYPE data
Public ContentTypeData As String = vbNullString 'filename or text encoding
Public ContentTypeDataIsFilename As Boolean = False 'True if ContentTypeData specifies a filename
Public ContentEncoding As String = vbNullString 'CONTENT-TRANSFER-ENCODING data
Public ContentBody As String = vbNullString 'raw data of block
End Class
我尝试过使用一些代码,例如 String.Join,但我最终得到了一个空白字符串。
请原谅我的无知,因为我是 VB 新手。
感谢大家的帮助!
瑞恩
【问题讨论】:
-
不确定你在做什么,但
Attachments是一个集合,所以试图将它写成一堆字节不会提供一种方法来知道一个项目在哪里结束,另一个在哪里开始。它只是一个斑点。 也许你想序列化它? -
Ryan 在每个循环
File.AppendAllText电子邮件和附件详细信息,以便您知道一个项目结束和另一个开始的位置。我个人会使用数据库而不是文本文件,文本文件会变得非常非常大,一旦超过 5MB 左右就需要很长时间才能打开。 -
谢谢@Plutonix,序列化它工作得很好。我正在前往我需要去的地方的路上。如果有人想知道我正在设计一个显示类似于 IM 客户端的电子邮件客户端。
标签: c# vb.net email-attachments data-manipulation