1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
/*
imaps_folders.cpp
-----------------
Connects to IMAP server and lists recursively all folders.
Copyright (C) 2016, Tomislav Karastojkovic (http://www.alepho.com).
Distributed under the FreeBSD license, see the accompanying file LICENSE or
copy at http://www.freebsd.org/copyright/freebsd-license.html.
*/
#include <algorithm>
#include <iostream>
#include <string>
#include <mailio/imap.hpp>
using mailio::imaps;
using mailio::imap_error;
using mailio::dialog_error;
using std::for_each;
using std::cout;
using std::endl;
using std::string;
void print_folders(unsigned tabs, const imaps::mailbox_folder_t& folder)
{
string indent(tabs, '\t');
for (auto& f : folder.folders)
{
cout << indent << f.first << endl;
if (!f.second.folders.empty())
print_folders(++tabs, f.second);
}
}
int main()
{
try
{
imaps conn("imap.mailserver.com", 993);
// modify username/password to use real credentials
conn.authenticate("mailio@mailserver.com", "mailiopass", imaps::auth_method_t::LOGIN);
imaps::mailbox_folder_t fld = conn.list_folders("");
print_folders(0, fld);
}
catch (imap_error& exc)
{
cout << exc.what() << endl;
}
catch (dialog_error& exc)
{
cout << exc.what() << endl;
}
return EXIT_SUCCESS;
}
|