aboutsummaryrefslogtreecommitdiffstats
path: root/examples/example6.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/example6.cpp')
-rw-r--r--examples/example6.cpp91
1 files changed, 88 insertions, 3 deletions
diff --git a/examples/example6.cpp b/examples/example6.cpp
index d2206e7a..30767c3e 100644
--- a/examples/example6.cpp
+++ b/examples/example6.cpp
@@ -563,6 +563,8 @@ static void connectStore()
choices.push_back("Status");
choices.push_back("List folders");
choices.push_back("Change folder");
+ choices.push_back("Add message (to the current folder)");
+ choices.push_back("Copy message (into the current folder)");
choices.push_back("Return to main menu");
const int choice = printMenu(choices);
@@ -570,7 +572,7 @@ static void connectStore()
// Request message number
vmime::shared_ptr <vmime::net::message> msg;
- if (choice != 6 && choice != 7 && choice != 8)
+ if (choice == 1 || choice == 2 || choice == 3 || choice == 4 || choice == 5 || choice == 10)
{
std::cout << "Enter message number: ";
std::cout.flush();
@@ -583,7 +585,7 @@ static void connectStore()
int num = 0;
iss >> num;
- if (num < 1 || num > count)
+ if (num < 1 || num > f->getMessageCount())
{
std::cerr << "Invalid message number." << std::endl;
continue;
@@ -722,8 +724,91 @@ static void connectStore()
break;
}
- // Main menu
+ // Add message
case 9:
+ {
+ vmime::messageBuilder mb;
+
+ mb.setExpeditor(vmime::mailbox("[email protected]"));
+
+ vmime::addressList to;
+ to.appendAddress(vmime::make_shared <vmime::mailbox>("[email protected]"));
+ mb.setRecipients(to);
+
+ mb.setSubject(vmime::text("Test message from VMime example6"));
+ mb.getTextPart()->setText(vmime::make_shared <vmime::stringContentHandler>(
+ "Body of test message from VMime example6."));
+
+ vmime::shared_ptr <vmime::message> msg = mb.construct();
+
+ vmime::net::messageSet set = f->addMessage(msg);
+
+ if (set.isEmpty())
+ {
+ std::cout << "Message has successfully been added, "
+ << "but its UID/number is not known." << std::endl;
+ }
+ else
+ {
+ const vmime::net::messageRange& range = set.getRangeAt(0);
+
+ if (set.isUIDSet())
+ {
+ const vmime::net::message::uid uid =
+ dynamic_cast <const vmime::net::UIDMessageRange&>(range).getFirst();
+
+ std::cout << "Message has successfully been added, "
+ << "its UID is '" << uid << "'." << std::endl;
+ }
+ else
+ {
+ const int number =
+ dynamic_cast <const vmime::net::numberMessageRange&>(range).getFirst();
+
+ std::cout << "Message has successfully been added, "
+ << "its number is '" << number << "'." << std::endl;
+ }
+ }
+
+ break;
+ }
+ // Copy message
+ case 10:
+ {
+ vmime::net::messageSet set = f->copyMessages(f->getFullPath(),
+ vmime::net::messageSet::byNumber(msg->getNumber()));
+
+ if (set.isEmpty())
+ {
+ std::cout << "Message has successfully been copied, "
+ << "but its UID/number is not known." << std::endl;
+ }
+ else
+ {
+ const vmime::net::messageRange& range = set.getRangeAt(0);
+
+ if (set.isUIDSet())
+ {
+ const vmime::net::message::uid uid =
+ dynamic_cast <const vmime::net::UIDMessageRange&>(range).getFirst();
+
+ std::cout << "Message has successfully been copied, "
+ << "its UID is '" << uid << "'." << std::endl;
+ }
+ else
+ {
+ const int number =
+ dynamic_cast <const vmime::net::numberMessageRange&>(range).getFirst();
+
+ std::cout << "Message has successfully been copied, "
+ << "its number is '" << number << "'." << std::endl;
+ }
+ }
+
+ break;
+ }
+ // Main menu
+ case 11:
f->close(true); // 'true' to expunge deleted messages
cont = false;