diff options
Diffstat (limited to 'mimelib/test')
-rw-r--r-- | mimelib/test/INSTALL | 26 | ||||
-rw-r--r-- | mimelib/test/exampl01.cpp | 80 | ||||
-rw-r--r-- | mimelib/test/exampl01.txt | 34 | ||||
-rw-r--r-- | mimelib/test/exampl02.cpp | 84 | ||||
-rw-r--r-- | mimelib/test/exampl02.txt | 32 | ||||
-rw-r--r-- | mimelib/test/exampl03.cpp | 95 | ||||
-rw-r--r-- | mimelib/test/exampl03.txt | 28 | ||||
-rw-r--r-- | mimelib/test/exampl04.cpp | 113 | ||||
-rw-r--r-- | mimelib/test/exampl04.txt | 73 | ||||
-rw-r--r-- | mimelib/test/exampl05.cpp | 77 | ||||
-rw-r--r-- | mimelib/test/exampl05.txt | 34 |
11 files changed, 676 insertions, 0 deletions
diff --git a/mimelib/test/INSTALL b/mimelib/test/INSTALL new file mode 100644 index 000000000..822915e34 --- /dev/null +++ b/mimelib/test/INSTALL @@ -0,0 +1,26 @@ +Sorry, there's no autoconf script available yet. However, there are comments +in the makefile to help you out, and there are not a lot of changes to make. +There are different options available, some of which are platform dependent. +For example, under Win32 you can compile the library as a .LIB or as a .DLL. +To change any of the defaults, edit the file ./mimepp/config.h. It's +probably a good idea to take a look at that file anyway. + +There are several makefiles available. Makefile.unx is a makefile for a +generic UNIX system. Makefile.vc is a makefile for Visual C++ 4 or 5. +Makefile.bc is a makefile for Borland C++ 5. + +If you are using the library on a non-UNIX system, such as Windows 3.1 or +Macintosh, you will probably need to change msgid.cpp. The function +DwMsgId::CreateDefault() needs to get the host name and the process ID to +create a msg-id. I put some conditional compilation macros in to support +Winsock, but I have not tested it under Windows 3.1. If you do not know how +to get your host name, you can set the static member DwMsgId::sHostName +before using the library functions. + +On a UNIX system: + +Typing 'make -f makefile.unx' will make the library libmimepp.a and the +example programs exampl01, exampl02, exampl03, exampl04, exampl05; +typing 'make lib' will make just the library. Finally, type 'make install +' to copy the include files to /usr/local/include/mimepp and the library +to /usr/local/lib. diff --git a/mimelib/test/exampl01.cpp b/mimelib/test/exampl01.cpp new file mode 100644 index 000000000..497383bf9 --- /dev/null +++ b/mimelib/test/exampl01.cpp @@ -0,0 +1,80 @@ +//============================================================================= +// File: exampl01.cpp +// Contents: Source code for Example 1 -- Creating a simple message +// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net> +// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html +// +// Copyright (c) 1996, 1997 Douglas W. Sauder +// All rights reserved. +// +// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT, +// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF +// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER +// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT +// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" +// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, +// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +// +//============================================================================= + +#include <stdlib.h> +#include <time.h> +#include <iostream> +#include <fstream> +#include "basicmsg.h" + +int main() +{ + // Initialize the library + + DwInitialize(); + + // Get a buffer of data from a text file + + DwString buffer = ""; + DwString line; + std::ifstream istrm("exampl01.txt"); + while (DwTrue) { + getline(istrm, line); + if (istrm.eof()) { + break; + } + buffer += line + DW_EOL; + } + istrm.close(); + + // Create a message + + BasicMessage msg; + + // Create MIME-Version and Message-id header fields + + msg.SetAutomaticFields(); + + // Set header fields + + msg.SetDate(time(NULL)); + msg.SetTypeStr("Text"); + msg.SetSubtypeStr("Plain"); + msg.SetCteStr("7bit"); + msg.SetFrom("Emily Postnews <emily.postnews@usenet.com>"); + msg.SetTo("verbose@noisy"); + msg.SetCc("forgetful@myvax"); + msg.SetBcc("eager@beaver.dam"); + msg.SetSubject("Re: How long should my signature be?"); + + // Set body + + msg.SetBody(buffer); + + // Write it to a file + + std::ofstream ostrm("exampl01.out"); + ostrm << msg.AsString(); + + return 0; +} + diff --git a/mimelib/test/exampl01.txt b/mimelib/test/exampl01.txt new file mode 100644 index 000000000..88e0ba608 --- /dev/null +++ b/mimelib/test/exampl01.txt @@ -0,0 +1,34 @@ +> Dear Miss Postnews: +> +> How long should my signature be? +> +> -- verbose@noisy + +Dear Verbose: + +Please try and make your signature as long as you can. It's much more +important than your article, of course, so try and have more lines of +signature than actual text. + +Try and include a large graphic made of ASCII characters, plus lots of cute +quotes and slogans. People will never tire of reading these pearls of wisdom +again and again, and you will soon become personally associated with the joy +each reader feels at seeing yet another delightful repeat of your signature. + +Be sure as well to include a complete map of USENET with each signature, to +show how anybody can get mail to you from any site in the world. Be sure to +include ARPA gateways as well. Also tell people on your own site how to mail +to you. Give independent addresses for Internet, UUCP, BITNET, Arpanet and +CSNET, even if they're all the same. + +Aside from your reply address, include your full name, company and +organization. It's just common courtesy -- after all, in some newsreaders +people have to type an *entire* keystroke to go back to the top of your +article to see this information in the header. + +By all means include your phone number and street address in every single +article. People are always responding to usenet articles with phone calls +and letters. It would be silly to go to the extra trouble of including this +information only in articles that need a response by conventional channels! + +Em diff --git a/mimelib/test/exampl02.cpp b/mimelib/test/exampl02.cpp new file mode 100644 index 000000000..600df8a6b --- /dev/null +++ b/mimelib/test/exampl02.cpp @@ -0,0 +1,84 @@ +//============================================================================= +// File: exampl02.cpp +// Contents: Source code for Example 2 -- Parsing a simple message +// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net> +// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html +// +// Copyright (c) 1996, 1997 Douglas W. Sauder +// All rights reserved. +// +// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT, +// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF +// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER +// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT +// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" +// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, +// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +// +//============================================================================= + +#include <stdlib.h> +#include <iostream> +#include <fstream> +#include "basicmsg.h" + +#include <mimelib/token.h> + + +int main() +{ + // Initialize the library + + DwInitialize(); + + // Read message from file + + DwString messageStr = ""; + DwString line; + std::ifstream istrm("exampl02.txt"); + while (DwTrue) { + getline(istrm, line); + if (istrm.eof()) { + break; + } + messageStr += line + DW_EOL; + } + istrm.close(); + + // Create a DwMessage and parse it. The DwMessage should be created on + // the free store, since it will be added to the BasicMessage. + + DwMessage* msg = DwMessage::NewMessage(messageStr, 0); + msg->Parse(); + + // Create a Message and add the DwMessage to it + + BasicMessage message(msg); + + // Open file stream for output + + std::ofstream ostrm("exampl02.out"); + + // Print the header fields + + ostrm << "Type -> " << message.TypeStr() << std::endl; + ostrm << "Subtype -> " << message.SubtypeStr() << std::endl; + ostrm << "Content-Transfer-Encoding -> " << message.CteStr() << std::endl; + ostrm << "Date -> " << message.DateStr() << std::endl; + ostrm << "From -> " << message.From() << std::endl; + ostrm << "To -> " << message.To() << std::endl; + ostrm << "Cc -> " << message.Cc() << std::endl; + ostrm << "Bcc -> " << message.Bcc() << std::endl; + ostrm << "Subject -> " << message.Subject() << std::endl; + + // Print the body + + ostrm << "\nBody ->" << std::endl; + ostrm << message.Body() << std::endl; + + return 0; +} + diff --git a/mimelib/test/exampl02.txt b/mimelib/test/exampl02.txt new file mode 100644 index 000000000..b80e9be75 --- /dev/null +++ b/mimelib/test/exampl02.txt @@ -0,0 +1,32 @@ +MIME-Version: 1.0 +Message-Id: <97082402002000.00107@kaybee> +Date: Sun, 24 Aug 1997 02:00:20 -0500 +Content-Type: Text/Plain +Content-Transfer-Encoding: 7bit +From: Emily Postnews <emily.postnews@usenet.com> +To: verbose@noisy +Cc: forgetful@myvax +Bcc: eager@beaver.dam +Subject: Re: Forgot my signature! + +> Dear Emily +> +> Today I posted an article and forgot to include my signature. What should I +> do? +> +> -- forgetful@myvax + +Dear Forgetful: + +Rush to your terminal right away and post an article that says, "Oops, I +forgot to post my signature with that last article. Here it is." + +Since most people will have forgotten your earlier article, (particularly +since it dared to be so boring as to not have a nice, juicy signature) this +will remind them of it. Besides, people care much more about the signature +anyway. See the previous letter for more important details. + +Also, be sure to include your signature TWICE in each article. That way +you're sure people will read it. + +Em diff --git a/mimelib/test/exampl03.cpp b/mimelib/test/exampl03.cpp new file mode 100644 index 000000000..02350e9db --- /dev/null +++ b/mimelib/test/exampl03.cpp @@ -0,0 +1,95 @@ +//============================================================================= +// File: exampl03.cpp +// Contents: Source code for Example 3 -- Creating a multipart message +// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net> +// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html +// +// Copyright (c) 1996, 1997 Douglas W. Sauder +// All rights reserved. +// +// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT, +// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF +// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER +// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT +// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" +// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, +// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +// +//============================================================================= + +#include <stdlib.h> +#include <time.h> +#include <iostream> +#include <fstream> +#include "multipar.h" + + +int main() +{ + // Initialize the library + + DwInitialize(); + + // Get a buffer of data from a text file + + DwString buffer = ""; + DwString line; + std::ifstream istrm("exampl03.txt"); + while (DwTrue) { + getline(istrm, line); + if (istrm.eof()) { + break; + } + buffer += line + DW_EOL; + } + istrm.close(); + + // Create a MultipartMessage + + MultipartMessage msg; + + // Create MIME-Version and Message-id header fields + + msg.SetAutomaticFields(); + + // Set header fields + + DwUint32 t = (DwUint32) time(NULL); + msg.SetDate(t); + msg.SetFrom("Emily Postnews <emily.postnews@usenet.com>"); + msg.SetTo("verbose@noisy"); + msg.SetCc("forgetful@myvax"); + msg.SetBcc("eager@beaver.dam"); + msg.SetSubject("Getting email through"); + + // Add body part 1 + + MultipartBodyPart part; + part.SetType(DwMime::kTypeText); + part.SetSubtype(DwMime::kSubtypePlain); + part.SetContentTransferEncoding(DwMime::kCte7bit); + part.SetContentDescription("text, unencoded"); + part.SetBody(buffer); + msg.AddBodyPart(part); + + // Add body part 2 + + part.SetType(DwMime::kTypeText); + part.SetSubtype(DwMime::kSubtypePlain); + part.SetContentTransferEncoding(DwMime::kCteBase64); + part.SetContentDescription("text, base64 encoded"); + DwString ascData; + DwEncodeBase64(buffer, ascData); + part.SetBody(ascData); + msg.AddBodyPart(part); + + // Write it to a file + + std::ofstream ostrm("exampl03.out"); + ostrm << msg.AsString(); + + return 0; +} diff --git a/mimelib/test/exampl03.txt b/mimelib/test/exampl03.txt new file mode 100644 index 000000000..63609e141 --- /dev/null +++ b/mimelib/test/exampl03.txt @@ -0,0 +1,28 @@ +> Dear Ms. Postnews: +> +> I couldn't get mail through to somebody on another site. What should I do? +> +> -- eager@beaver.dam + +Dear Eager: + +No problem, just post your message to a group that a lot of people read. +Say, "This is for John Smith. I couldn't get mail through so I'm posting it. +All others please ignore." + +This way tens of thousands of people will spend a few seconds scanning over +and ignoring your article, using up over 16 man-hours of their collective +time, but you will be saved the terrible trouble of checking through usenet +maps or looking for alternate routes. Just think, if you couldn't distribute +your message to 9000 other computers, you might actually have to (gasp) call +directory assistance for 60 cents, or even phone the person. This can cost +as much as a few DOLLARS (!) for a 5 minute call! + +And certainly it's better to spend 10 to 20 dollars of other people's money +distributing the message than for you to have to waste $9 on an overnight +letter, or even 29 cents on a stamp! + +Don't forget. The world will end if your message doesn't get through, so +post it as many places as you can. + +Em diff --git a/mimelib/test/exampl04.cpp b/mimelib/test/exampl04.cpp new file mode 100644 index 000000000..7a0b5d078 --- /dev/null +++ b/mimelib/test/exampl04.cpp @@ -0,0 +1,113 @@ +//============================================================================= +// File: exampl04.cpp +// Contents: Source code for Example 4 -- Parsing a multipart message +// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net> +// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html +// +// Copyright (c) 1996, 1997 Douglas W. Sauder +// All rights reserved. +// +// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT, +// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF +// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER +// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT +// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" +// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, +// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +// +//============================================================================= + +#include <stdlib.h> +#include <iostream> +#include <fstream> +#include "multipar.h" + + +int main() +{ + // Initialize the library + + DwInitialize(); + + // Read message from file + + DwString messageStr = ""; + DwString line; + std::ifstream istrm("exampl04.txt"); + while (DwTrue) { + getline(istrm, line); + if (istrm.eof()) { + break; + } + messageStr += line + DW_EOL; + } + istrm.close(); + + // Create a DwMessage and parse it. The DwMessage should be created on + // the free store, since it will be added to the MultipartMessage. + + DwMessage* msg = DwMessage::NewMessage(messageStr, 0); + msg->Parse(); + + // Make sure it is a multipart message + // If is not a multipart message, we could create a BasicMessage instead, + // but we won't do that in this example. + + if (msg->Headers().ContentType().Type() != DwMime::kTypeMultipart) { + std::cerr << "Not a multipart message\n"; + return 0; + } + + // Create a MultipartMessage + + MultipartMessage multipart(msg); + + // Open file stream for output + + std::ofstream ostrm("exampl04.out"); + + // Print the header fields + + ostrm << "Type -> " << multipart.TypeStr() << std::endl; + ostrm << "Subtype -> " << multipart.SubtypeStr() << std::endl; + ostrm << "Date -> " << multipart.DateStr() << std::endl; + ostrm << "From -> " << multipart.From() << std::endl; + ostrm << "To -> " << multipart.To() << std::endl; + ostrm << "Cc -> " << multipart.Cc() << std::endl; + ostrm << "Bcc -> " << multipart.Bcc() << std::endl; + ostrm << "Subject -> " << multipart.Subject() << std::endl; + + // Read the body parts and print them + + MultipartBodyPart part; + DwString body; + int numParts = multipart.NumberOfParts(); + for (int idx=0; idx < numParts; ++idx) { + multipart.BodyPart(idx, part); + ostrm << "\nBody part number " << idx << std::endl; + ostrm << "Type -> " << part.TypeStr() << std::endl; + ostrm << "Subtype -> " << part.SubtypeStr() << std::endl; + ostrm << "Content transfer encoding -> " + << part.ContentTransferEncodingStr() << std::endl; + ostrm << "Content description -> " + << part.ContentDescription() << std::endl; + int cte = part.ContentTransferEncoding(); + if (cte == DwMime::kCteBase64) { + DwDecodeBase64(part.Body(), body); + ostrm << "Body (decoded) ->" << std::endl << body << std::endl; + } + else if (cte == DwMime::kCteQuotedPrintable) { + DwDecodeQuotedPrintable(part.Body(), body); + ostrm << "Body (decoded) ->" << std::endl << body << std::endl; + } + else { + body = part.Body(); + ostrm << "Body ->" << std::endl << body << std::endl; + } + } + return 0; +} + diff --git a/mimelib/test/exampl04.txt b/mimelib/test/exampl04.txt new file mode 100644 index 000000000..9574c5194 --- /dev/null +++ b/mimelib/test/exampl04.txt @@ -0,0 +1,73 @@ +MIME-Version: 1.0 +Message-Id: <97082402123500.00119@kaybee> +Content-Type: Multipart/Mixed; + boundary="Boundary-=_pHqghUmeaYlNlfdXfircvsCxgGBw" +Date: Sun, 24 Aug 1997 02:12:35 -0500 +From: Emily Postnews <emily.postnews@usenet.com> +To: verbose@noisy +Cc: forgetful@myvax +Bcc: eager@beaver.dam +Subject: Getting email through + + +--Boundary-=_pHqghUmeaYlNlfdXfircvsCxgGBw +Content-Type: Text/Plain +Content-Transfer-Encoding: 7bit +Content-Description: text, unencoded + +> Dear Ms. Postnews: +> +> I couldn't get mail through to somebody on another site. What should I do? +> +> -- eager@beaver.dam + +Dear Eager: + +No problem, just post your message to a group that a lot of people read. +Say, "This is for John Smith. I couldn't get mail through so I'm posting it. +All others please ignore." + +This way tens of thousands of people will spend a few seconds scanning over +and ignoring your article, using up over 16 man-hours of their collective +time, but you will be saved the terrible trouble of checking through usenet +maps or looking for alternate routes. Just think, if you couldn't distribute +your message to 9000 other computers, you might actually have to (gasp) call +directory assistance for 60 cents, or even phone the person. This can cost +as much as a few DOLLARS (!) for a 5 minute call! + +And certainly it's better to spend 10 to 20 dollars of other people's money +distributing the message than for you to have to waste $9 on an overnight +letter, or even 29 cents on a stamp! + +Don't forget. The world will end if your message doesn't get through, so +post it as many places as you can. + +Em + +--Boundary-=_pHqghUmeaYlNlfdXfircvsCxgGBw +Content-Type: Text/Plain +Content-Transfer-Encoding: base64 +Content-Description: text, base64 encoded + +PiBEZWFyIE1zLiBQb3N0bmV3czoKPgo+IEkgY291bGRuJ3QgZ2V0IG1haWwgdGhyb3VnaCB0byBz +b21lYm9keSBvbiBhbm90aGVyIHNpdGUuIFdoYXQgc2hvdWxkIEkgZG8/Cj4KPiAtLSBlYWdlckBi +ZWF2ZXIuZGFtCgpEZWFyIEVhZ2VyOgoKTm8gcHJvYmxlbSwganVzdCBwb3N0IHlvdXIgbWVzc2Fn +ZSB0byBhIGdyb3VwIHRoYXQgYSBsb3Qgb2YgcGVvcGxlIHJlYWQuClNheSwgIlRoaXMgaXMgZm9y +IEpvaG4gU21pdGguIEkgY291bGRuJ3QgZ2V0IG1haWwgdGhyb3VnaCBzbyBJJ20gcG9zdGluZyBp +dC4KQWxsIG90aGVycyBwbGVhc2UgaWdub3JlLiIKClRoaXMgd2F5IHRlbnMgb2YgdGhvdXNhbmRz +IG9mIHBlb3BsZSB3aWxsIHNwZW5kIGEgZmV3IHNlY29uZHMgc2Nhbm5pbmcgb3ZlcgphbmQgaWdu +b3JpbmcgeW91ciBhcnRpY2xlLCB1c2luZyB1cCBvdmVyIDE2IG1hbi1ob3VycyBvZiB0aGVpciBj +b2xsZWN0aXZlCnRpbWUsIGJ1dCB5b3Ugd2lsbCBiZSBzYXZlZCB0aGUgdGVycmlibGUgdHJvdWJs +ZSBvZiBjaGVja2luZyB0aHJvdWdoIHVzZW5ldAptYXBzIG9yIGxvb2tpbmcgZm9yIGFsdGVybmF0 +ZSByb3V0ZXMuIEp1c3QgdGhpbmssIGlmIHlvdSBjb3VsZG4ndCBkaXN0cmlidXRlCnlvdXIgbWVz +c2FnZSB0byA5MDAwIG90aGVyIGNvbXB1dGVycywgeW91IG1pZ2h0IGFjdHVhbGx5IGhhdmUgdG8g +KGdhc3ApIGNhbGwKZGlyZWN0b3J5IGFzc2lzdGFuY2UgZm9yIDYwIGNlbnRzLCBvciBldmVuIHBo +b25lIHRoZSBwZXJzb24uIFRoaXMgY2FuIGNvc3QKYXMgbXVjaCBhcyBhIGZldyBET0xMQVJTICgh +KSBmb3IgYSA1IG1pbnV0ZSBjYWxsIQoKQW5kIGNlcnRhaW5seSBpdCdzIGJldHRlciB0byBzcGVu +ZCAxMCB0byAyMCBkb2xsYXJzIG9mIG90aGVyIHBlb3BsZSdzIG1vbmV5CmRpc3RyaWJ1dGluZyB0 +aGUgbWVzc2FnZSB0aGFuIGZvciB5b3UgdG8gaGF2ZSB0byB3YXN0ZSAkOSBvbiBhbiBvdmVybmln +aHQKbGV0dGVyLCBvciBldmVuIDI5IGNlbnRzIG9uIGEgc3RhbXAhCgpEb24ndCBmb3JnZXQuIFRo +ZSB3b3JsZCB3aWxsIGVuZCBpZiB5b3VyIG1lc3NhZ2UgZG9lc24ndCBnZXQgdGhyb3VnaCwgc28K +cG9zdCBpdCBhcyBtYW55IHBsYWNlcyBhcyB5b3UgY2FuLgoKRW0K + +--Boundary-=_pHqghUmeaYlNlfdXfircvsCxgGBw-- diff --git a/mimelib/test/exampl05.cpp b/mimelib/test/exampl05.cpp new file mode 100644 index 000000000..5e3b16d86 --- /dev/null +++ b/mimelib/test/exampl05.cpp @@ -0,0 +1,77 @@ +//============================================================================= +// File: exampl05.cpp +// Contents: Source code for Example 5 -- Creating a message with +// Maintainer: Doug Sauder <dwsauder@fwb.gulf.net> +// WWW: http://www.fwb.gulf.net/~dwsauder/mimepp.html +// +// Copyright (c) 1996, 1997 Douglas W. Sauder +// All rights reserved. +// +// IN NO EVENT SHALL DOUGLAS W. SAUDER BE LIABLE TO ANY PARTY FOR DIRECT, +// INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF +// THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF DOUGLAS W. SAUDER +// HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// DOUGLAS W. SAUDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT +// NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" +// BASIS, AND DOUGLAS W. SAUDER HAS NO OBLIGATION TO PROVIDE MAINTENANCE, +// SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +// +//============================================================================= + +#include <stdlib.h> +#include <time.h> +#include <iostream> +#include <fstream> +#include "attach.h" + + +int main() +{ + // Initialize the library + + DwInitialize(); + + // Create a MessageWithAttachements + + MessageWithAttachments msg; + + // Create MIME-Version and Message-id header fields + + msg.SetAutomaticFields(); + + // Set header fields + + DwUint32 t = (DwUint32) time(NULL); + msg.SetDate(t); + msg.SetFrom("Emily Postnews <emily.postnews@usenet.com>"); + msg.SetTo("verbose@noisy"); + msg.SetCc("forgetful@myvax"); + msg.SetBcc("eager@beaver.dam"); + msg.SetSubject("Re: How long should my signature be?"); + + // Add text + + DwString text = "Read the attached files\n"; + msg.SetText(text); + + // Add 7bit attachment + + msg.Attach7bitFile("exampl05.txt"); + + // Add 8bit attachment + + msg.Attach8bitFile("exampl05.txt"); + + // Add binary attachment + + msg.AttachBinaryFile("exampl05.txt"); + + // Write it to a file + + std::ofstream ostrm("exampl05.out"); + ostrm << msg.AsString(); + + return 0; +} diff --git a/mimelib/test/exampl05.txt b/mimelib/test/exampl05.txt new file mode 100644 index 000000000..88e0ba608 --- /dev/null +++ b/mimelib/test/exampl05.txt @@ -0,0 +1,34 @@ +> Dear Miss Postnews: +> +> How long should my signature be? +> +> -- verbose@noisy + +Dear Verbose: + +Please try and make your signature as long as you can. It's much more +important than your article, of course, so try and have more lines of +signature than actual text. + +Try and include a large graphic made of ASCII characters, plus lots of cute +quotes and slogans. People will never tire of reading these pearls of wisdom +again and again, and you will soon become personally associated with the joy +each reader feels at seeing yet another delightful repeat of your signature. + +Be sure as well to include a complete map of USENET with each signature, to +show how anybody can get mail to you from any site in the world. Be sure to +include ARPA gateways as well. Also tell people on your own site how to mail +to you. Give independent addresses for Internet, UUCP, BITNET, Arpanet and +CSNET, even if they're all the same. + +Aside from your reply address, include your full name, company and +organization. It's just common courtesy -- after all, in some newsreaders +people have to type an *entire* keystroke to go back to the top of your +article to see this information in the header. + +By all means include your phone number and street address in every single +article. People are always responding to usenet articles with phone calls +and letters. It would be silly to go to the extra trouble of including this +information only in articles that need a response by conventional channels! + +Em |