【发布时间】:2014-04-04 20:14:53
【问题描述】:
这是我的代码:
#Region "Imports"
Imports System.Text.RegularExpressions
Imports System.Text
Imports Microsoft.VisualBasic.CallType
Imports ImapX
Imports System.Runtime.CompilerServices
Imports System.Security.Authentication
Imports System.IO
Imports ml = System.Net.Mail
Imports System.Net
Imports ImapX.Enums
Imports ImapX.Constants
Imports System.Security.Authentication.SslProtocols
#End Region
Module Module1
Sub Main()
Dim _messages As List(Of ImapX.Message)
Using MyImapClient = New ImapX.ImapClient
With MyImapClient
.Host = ImapServer
.Port = Port
.SslProtocol = Ssl3 Or Tls
.ValidateServerCertificate = True
.Credentials = New ImapX.Authentication.PlainCredentials(UserName, Password)
Dim IsConnected As Boolean = .Connect
.Login()
.Behavior.AutoDownloadBodyOnAccess = False
.Behavior.AutoPopulateFolderMessages = False
.Behavior.MessageFetchMode = MessageFetchMode.Full
.Behavior.ExamineFolders = False
.Behavior.RequestedHeaders = {MessageHeader.From, MessageHeader.[Date], MessageHeader.Subject, MessageHeader.ContentType, MessageHeader.Importance}
'Dim IsInboxSelected As Boolean = .SelectFolder(.Folders.Inbox.Name)
'Dim IsInboxSelected As Boolean = .Folders(.Folders.Inbox.Name).[Select]()
End With
Dim MyFolder As Folder = MyImapClient.Folders.Inbox
_messages = MyFolder.Search().OrderBy(Function(n) n.[Date]).ToList()
_messages.ForEach(Sub(n) n.Download(MessageFetchMode.Full))
_messages.ForEach(Sub(n) n.Download(MessageFetchMode.Full))
End Using
Dim MyAttachment As ImapX.Attachment = _messages.First.Attachments.First
MyAttachment.Download()
Dim FolderPath As String = "C:\Users\AAA\Downloads\"
Dim LocalFileName As String = "1212.txt"
MyAttachment.Save(FolderPath, LocalFileName)
End Sub
End Module
代码运行没有问题——它连接到 imap 服务器,下载第一封电子邮件的第一个附件,它恰好是一个 .txt 文件,所以我将它保存为这样。
问题是文件的内容前面加了“ * 2 FETCH (”,后面跟着“UID 45”,所有回车都从文件中删除了。
你能帮忙吗?谢谢,
【问题讨论】:
-
CRLF 缺失问题已经修复,您可以从repository 下载最新代码。正文中
* 2 FETCH (等垃圾数据问题已知,即将更新。 -
@PavelAzanov,我正在使用 2013 年 12 月 16 日上传的库,但它仍然无法正常工作(我尝试添加源、dll 和 NuGet)。我的代码有问题吗?泰。
-
下载部分的二进制文件,以及 Nuget 包有旧版本。要获取最新代码,请使用此链接:imapx.codeplex.com/SourceControl/latest。我对您的问题进行了更多更新,但它应该可以正常工作。但是,Internet 消息格式有一些限制,几乎不可能为 7 位/8 位纯文本消息部分恢复正确的换行符。
-
仅用于正文吗?我使用了您发送的最新链接,但它仍然不适用于附件。顺便说一句,我不确定这是否有帮助:codeproject.com/Articles/17201/…
-
不仅适用于正文,也适用于7/8位纯文本附件。你能告诉我你要下载的原始文件吗?只需将其发送至 p13a92@googlemail.com
标签: vb.net email email-attachments imapx