0
我目前使用下面的代碼來下載消息電子郵件,自定義標題添加到它,然後添加郵件回郵件文件夾:添加自定義頁眉使用MailKit
using (ImapClient imap = new ImapClient())
{
imap.ServerCertificateValidationCallback = (s, c, h, e) => true;
imap.Connect(host, port, useSSL);
imap.Authenticate(user, password);
IMailFolder mailFolder = imap.GetFolder(folder);
mailFolder.Open(FolderAccess.ReadWrite);
if (mailFolder.Count > 0)
{
MimeMessage message = mailFolder.GetMessage(0);
var header = message.Headers.FirstOrDefault(h => h.Field == "X-SomeCustomHeader");
if (header == null)
{
message.Headers.Add("X-SomeCustomHeader", "SomeValue");
}
mailFolder.SetFlags(0, MessageFlags.Deleted, true);
mailFolder.Expunge();
UniqueId? newUid = mailFolder.Append(message);
mailFolder.Expunge();
var foundMails = mailFolder.Search(SearchQuery.HeaderContains("X-SomeCustomHeader", "SomeValue"));
if (foundMails.Count > 0)
{
var foundMail = mailFolder.GetMessage(new UniqueId(foundMails.First().Id));
Console.WriteLine(foundMail.Subject);
}
mailFolder.Close(true);
}
}
的問題此代碼是,如果我查看文件夾中郵件的來源不在那裏,foundMails
計數爲零。
如果我查看message
它包含標題,所以如果我也做message.WriteTo(somePath);
標題也在那裏。
我在做什麼錯?
如果我使用Outlook客戶端,但是在gmail上使用它時失敗,此代碼有效。
是否'Append'方法返回一個UID(或空)?如果它返回一個uid,如果你執行'mailFolder.GetMessage(uid.Value)'會發生什麼? *那*消息是否有頭部? – jstedfast
另外嘗試獲取[ProtocolLog](https://github.com/jstedfast/MailKit/blob/master/FAQ.md#ProtocolLog)以查看附加到文件夾時郵件中是否包含郵件頭。 – jstedfast
@jstedfast它返回一個uid,但該消息也不包含標題。 – TheLethalCoder