diff options
author | Vincent Richard <[email protected]> | 2004-10-05 10:28:21 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2004-10-05 10:28:21 +0000 |
commit | a3229a051381e8f6b6df0fd423186166d20c898f (patch) | |
tree | 29dab66e608651e50a9b6f4bf9ce28f2ee897c87 /examples/example4.cpp | |
download | vmime-a3229a051381e8f6b6df0fd423186166d20c898f.tar.gz vmime-a3229a051381e8f6b6df0fd423186166d20c898f.zip |
Initial import.
Diffstat (limited to 'examples/example4.cpp')
-rw-r--r-- | examples/example4.cpp | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/examples/example4.cpp b/examples/example4.cpp new file mode 100644 index 00000000..164e4be9 --- /dev/null +++ b/examples/example4.cpp @@ -0,0 +1,94 @@ +// +// Copyright (C) 2002-2004 Vincent Richard <[email protected]> +// +// This program is free software; you can redistribute it and/or +// modify it under the terms of the GNU General Public License as +// published by the Free Software Foundation; either version 2 of +// the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// + +// +// EXAMPLE DESCRIPTION: +// ==================== +// This sample program demonstrate the use of the messageParser component +// to enumerate the text parts in a message. +// +// For more information, please visit: +// http://vmime.sourceforge.net/ +// + +#include <iostream> + +#include "../src/vmime" +#include "common.inc" + + +int main() +{ + std::cout << std::endl; + + // VMime initialization + vmime::platformDependant::setHandler<my_handler>(); + + try + { + vmime::messageParser mp("<...MIME message content...>"); + + // Enumerate text parts + for (std::vector <vmime::textPart*>::const_iterator i = mp.textParts().begin() ; + i != mp.textParts().end() ; ++i) + { + const vmime::textPart& part = **i; + + // Output content-type of the part + std::cout << part.type().generate() << std::endl; + + // text/html + if (part.type().subType() == vmime::mediaTypes::TEXT_HTML) + { + const vmime::htmlTextPart& hp = dynamic_cast<const vmime::htmlTextPart&>(part); + + // HTML text is in "hp.text()" + // Corresponding plain text is in "hp.plainText()" + + // Enumerate embedded objects (eg. images) + for (vmime::htmlTextPart::const_iterator i = hp.embeddedObjects.begin() ; + i != hp.embeddedObjects.end() ; ++i) + { + // Identifier (content-id or content-location) is in "(*i).id()" + // Object data is in "(*i).data()" + } + } + // text/plain + else + { + const vmime::textPart& tp = dynamic_cast<const vmime::textPart&>(part); + + // Text is in "tp.text()" + } + } + } + // VMime exception + catch (vmime::exception& e) + { + std::cout << "vmime::exception: " << e.what() << std::endl; + throw; + } + // Standard exception + catch (std::exception& e) + { + std::cout << "std::exception: " << e.what() << std::endl; + throw; + } + + std::cout << std::endl; +} |