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
のカウントは0になっています。
私がmessage
を見るとヘッダが入っているので、私もmessage.WriteTo(somePath);
ヘッダーもあります。
私は間違っていますか?
このコードは、Outlookクライアントを使用する場合に機能しますが、Gmailのメールクライアントで使用すると失敗します。
'Append'メソッドはuid(またはnull)を返しますか?それがuidを返す場合、 'mailFolder.GetMessage(uid.Value)'を実行するとどうなりますか? *そのメッセージにヘッダーがありますか? – jstedfast
また、[ProtocolLog](https://github.com/jstedfast/MailKit/blob/master/FAQ.md#ProtocolLog)を取得して、フォルダに添付されるときにヘッダーがメッセージに含まれているかどうかを確認してください。 – jstedfast
@jstedfast uidを返しますが、メッセージにもヘッダーは含まれていません。 – TheLethalCoder