0 votes
by (370 points)

Hi, i've the below question!

i want to delete all mail older than a range of date in Inbox an Sent Item.

In order to do this i've write this code:


messages = m_Imap.Search
       ImapSearchParameter.Arrived(StartDate, EndDate),
       ImapSearchParameter.Sent(StartDate, EndDate)

ImapMessageSet mailToBeDeleted = new ImapMessageSet();

foreach (ImapMessageInfo messPartial in messages)
} // End for

This code works for inbox mail bath not for sent mail;

What's wrong?

Other Question. if i use getfolderlist i don't see any folder "Sent Items". Why? My imap server is gmail. My end server is exchage.

Best Regards Enrico

Applies to: Rebex Secure Mail

2 Answers

0 votes
by (144k points)

The default overload of GetFolderList method only returns folders located in the root folder. In Gmail, the "Sent Items" folder is a subfolder of "[Gmail]" folder. To get a list of folders at all levels, call m_Imap.GetFolderList(null, ImapFolderListMode.All, true).

Please note that the "Sent Items" folder might use a different name when Gmail's web interface is set to a non-English language. Even the "[Gmail]" folder name might also be different for German users.

The following code locates the sent items folder regardless its name:

        string folderSent = null;
        foreach (ImapFolder folder in imap.GetFolderList(null, ImapFolderListMode.All, true))
            if (folder.Purpose == "Sent")
                folderSent = folder.Name;

        if (folderSent == null)
            throw new ApplicationException("Gmail 'Sent items' folder not found.");
0 votes
by (70.2k points)

To search within the "Sent Items" folder, you have to select it first:

messages = m_Imap.Search(ImapSearchParameter.Sent(StartDate, EndDate));

Please also mind the IMAP behaviour for searching dates:
1. Only date component take effect (time component is ignored)
2. StartDate is inclusive condition (mail.Date is >= StartDate)
3. EndDate is exclusive condition (mail.Date is < EndDate)

For example, if you want to find all mails sent in the past up to today, you have to call m_Imap.Search(ImapSearchParameter.Sent(StartDate, DateTime.Today.AddDays(1)));