我目前使用的代碼是
。try
{
//使用MailKit.Net.Pop3;。
string pathLog = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData)。
string fileNameLog = Path.Combine(pathLog, "pop3.txt") 。
using (var client = new Pop3Client(new ProtocolLogger(fileNameLog)>)
//使用(var client = new Pop3Client(new ProtocolLogger("pop3.log")))。
{
strProgress = strProgress "c"/span>;
client.Connect("outlook.office365.com", 995, SecureSocketOptions.SslOnConnect); //POP3埠為995。
strProgress = strProgress "d"。
client.Authenticate("xxx", "yyy")。
strProgress = strProgress "e"/span>;
for (int i = 0; i < client.Count; i )
{
strProgress = strProgress "f"/span>;
var message = client.GetMessage(i);
strProgress = strProgress "g";
//Write the message to a file[/span]。
message.WriteTo(string.Format("{0}.msg", i)); //<<<<<<<這里出錯。
numCountEmailsDownloaded = numCountEmailsDownloaded 1;
}
client.Disconnect(true)。
}
}
catch (Exception ex)
{
Toast.MakeText(this, ex.Message "
Stopped after " strProgress, ToastLength.Long).Show()。
}
我得到一個錯誤資訊,說'拒絕訪問路徑"/0.msg"。在abcdefg之后停止了(我使用strProgress來標記錯誤的位置)。
我試著將郵件正文獲取為字串,但錯誤資訊說'不要使用字串來序列化......用WriteTo代替',只是即使成功了,它也沒有告訴我如何處理。 收到電子郵件,然后想知道它們說了什么,這個想法一定很普遍,但網路上的許多其他問題和答案似乎認為這不值得實際拼出來。 我怎樣才能從上述內容中提取出電子郵件的正文?謝謝你。
uj5u.com熱心網友回復:
你正試圖將郵件寫到當前作業目錄中的一個檔案。這很可能是應用程式的路徑。
應用程式通常被安裝在Program Files檔案夾下。普通用戶沒有權限寫入該檔案夾。
你將需要使用一個不同的路徑來存盤你的檔案。例如,在LocalApplicationData檔案夾下的某個地方,您將使用該檔案夾來存放您的日志檔案。
uj5u.com熱心網友回復:
我試著把郵件正文作為一個字串來獲取
如果這是你真正想要的,也許可以把這一行改為:
string messageBody = message.GetTextBody(MimeKit.Text.TextFormat.Plain)。根據MimeMessage型別的檔案。在這里可以看到TextFormat的更多選項:
。http://www.mimekit.net/docs/html/T_MimeKit_Text_TextFormat.htm
這樣做也可以:
string messageBody = message.TextBody。在這兩種情況下,這是在尋找MIME訊息中的
Text選項。現在,發現文本格式不存在的訊息是很常見的,而訊息只包括一個HTML內容體。在這種情況下,你需要知道如何同時檢查文本和回退到HTML(或者反之)。除此之外,建議檔案權限的答案和評論聽起來是正確的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/313411.html
標籤:
上一篇:如何定義一個僅有超類的方法?
