I am working with the MBS plug-ins to try to get a (fairly simple) application running. I want to download, for my various IMAP accounts, a folder tree structure. I have hundreds of mail folders and Mail is not a very effective application for finding folders.
Anyway, I decided to buy the MBS plug-in as it seems to go some way towards what I want. The CURL IMAP example does indeed download something from my IMAP mail account, but it looks like just a set of numeric IDs. Each of them appears to be for a single email message. This approach seems to require a fair amount of low-level knowledge of CURL, so I’m having some difficulty navigating it… unfortunately the CURL Email client example falls over with CURL Error code: 78. I can’t find what that means either.
Does anyone know of any example code that will help me find my way? I looked at the Chilkat plug-ins but I can’t follow those either! I saw reference to a Git project too, but that has no example code that I can see.
To recap, I want to download a list of the names of folders and sub-folders in such a way that I can put them into a tree structure. Nothing else.
The correct function in the Chilkat plugin is ListMailboxes or ListMailboxesAsync.
The code assumes that you have already connected:
[code]CkoMailboxTask = CkoImap.ListMailboxesAsync("", “*”)
call CkoMailboxTask.Run
While CkoMailboxTask.Finished <> True
if globals.StopArchiving then
if not CkoMailboxTask.Cancel then app.SleepCurrentThread(10)
Return Nil
end if
CkoMailboxTask.SleepMs(25)
wend
if not CkoMailboxTask.TaskSuccess then
globals.theErrorLog.LogItem(CurrentMethodName + " task didn’t finish")
Return Nil
end if
dim CkoMailboxes as new Chilkat.Mailboxes
if not CkoMailboxes.LoadTaskResult(CkoMailboxTask) then
globals.theErrorLog.LogItem(CurrentMethodName + " wasn’t able to load result from task")
Return Nil
end if
if ckoMailboxes = Nil then
globals.theErrorLog.LogItem "no mailboxes found " + CkoImap.LastErrorText
Return Nil
end if
for currentMailbox as Integer = 0 to ckoMailboxes.Count - 1
if ckoMailboxes.IsSelectable(currentMailbox) then
MailboxesOriginal.AddRow ckoMailboxes.GetName(currentMailbox)
MailboxFlags.AddRow ckoMailboxes.GetFlags(currentMailbox)
end if
next
Theoretically, you could use my IMAP test app. That’s for users who have trouble connecting. It connects, shows a list of mailboxes and downloads the emails of a selected mailbox.
Just thought Id add that if this is connecting to Googles imap then we have been informed that very soon they will totally block user/password authentication and require oauth2.
I dont know if it costs money either, Im just starting to look at the whole process now because our smtp sending has started to fail because it is a less secure app according to google.