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

时间:2017-01-05 04:45:58

标签: c# asp.net asp.net-mvc email imap

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

这是我使用的代码:

Uri destinationUri = Uri.fromFile(new File(myContext.getCacheDir(), "IMG_" + System.currentTimeMillis()));
                UCrop.of(sourceUri, destinationUri)
                .withMaxResultSize(1080, 768) // any resolution you want
                .start(mContext, YourFragment/YourActivity.this);

这是我的输出:

enter image description here

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

真的很感激任何形式的帮助。

1 个答案:

答案 0 :(得分:2)

我通过设置默认邮箱解决了这个问题。 在我的情况下,默认邮箱始终是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);
}