在 C# 中使用 IMAP 获取已发送邮件的问题

Issues fetching sent Mail using IMAP in c#

我正在使用 IMAP 从 gmail 获取我的邮件。它可以很好地从收件箱中提取电子邮件,但在发送邮件时,会提供空值。

这是我正在使用的代码:

ImapClient client = new ImapClient("ExampleHost", port, ssl);
try
{
    client.Login("ExampleEmail", "ExamplePass", AuthMethod.Login);
    IEnumerable<uint> units = client.Search(SearchCondition.Seen());
    DataTable TempTaskTable = new DataTable();
    TempTaskTable.Columns.Add("FromEmail", typeof(string));
    TempTaskTable.Columns.Add("ToEmail", typeof(string));
    TempTaskTable.Columns.Add("Subject", typeof(string));
    foreach (var uid in units)
    {
        System.Net.Mail.MailMessage email = client.GetMessage(uid,true, "[Gmail]/Sent Mail");
        DataRow TempTaskRow2 = TempTaskTable.NewRow();
        TempTaskRow2["FromEmail"] = email.Sender;
        TempTaskRow2["ToEmail"] = email.From;
        TempTaskRow2["Subject"] = email.Subject;
    }

    bool result = false;
    string msg = "";
    usp_TempTasksSave(TempTaskTable, TempTaskAttachmentDatatTable, out result, out msg);
}
catch (Exception ex)
{
    string exceptionCheck = ex.Message;
}

这是我的输出:

我也在 Whosebug 上搜索过,到目前为止这是我得到的唯一帮助还不够

非常感谢任何形式的帮助。

我通过设置默认邮箱解决了这个问题。 就我而言,默认邮箱始终是 INBOX,因此我无法获取已发送的邮件。只用了一行就解决了这个问题。这是我现在使用的代码:

ImapClient client = new ImapClient("ExampleHost", port, ssl);
client.DefaultMailbox = "[Gmail]/Sent Mail";
try
{
    client.Login("ExampleEmail", "ExamplePass", AuthMethod.Login);
    IEnumerable<uint> units = client.Search(SearchCondition.Seen());
    DataTable TempTaskTable = new DataTable();
    TempTaskTable.Columns.Add("FromEmail", typeof(string));
    TempTaskTable.Columns.Add("ToEmail", typeof(string));
    TempTaskTable.Columns.Add("Subject", typeof(string));
    foreach (var uid in units)
    {
        System.Net.Mail.MailMessage email = client.GetMessage(uid,true, "[Gmail]/Sent Mail");
        DataRow TempTaskRow2 = TempTaskTable.NewRow();
        TempTaskRow2["FromEmail"] = email.Sender;
        TempTaskRow2["ToEmail"] = email.From;
        TempTaskRow2["Subject"] = email.Subject;
    }
}
catch (Exception ex)
{
    string exceptionCheck = ex.Message;
}

您还可以使用以下方式查看您的所有邮箱:

List<String> mailBoxesCheck = new List<string>();
foreach (var folder in client.ListMailboxes())
{
   mailBoxesCheck.Add(folder);
}