



                         SMTP/POP3 Email Engine

                           Library for Delphi


                               (SEE4D)


                             USERS MANUAL



                             Version 3.0

                            April 19, 1999



                     This software is provided as-is.
              There are no warranties, expressed or implied.




                           Copyright (C) 1999
                           All rights reserved



                       MarshallSoft Computing, Inc.
                           Post Office Box 4543
                           Huntsville AL 35815


                           Voice : 256-881-4630
                             FAX : 256-880-0925
                           email : info@marshallsoft.com
                             web : www.marshallsoft.com

                               _______
                          ____|__     |                (R)
                       --+       |    +-------------------
                         |   ____|__  |  Association of
                         |  |       |_|  Shareware
                         |__|   o   |    Professionals
                       --+--+   |   +---------------------
                            |___|___|    MEMBER


      MARSHALLSOFT is a registered trademark of MarshallSoft Computing.





     SEE4D Users Manual                                         Page 1

                            C O N T E N T S



        Chapter                                     Page


       1.0 Introduction................................................3
           1.1 Email Server and Client Compatibility...................5
           1.2 User Support............................................5
           1.3 ASP Ombudsman...........................................5
           1.4 Installation............................................6
           1.5 Uninstalling............................................6
       2.0 Library Overview............................................7
           2.1 Dynamic Link libraries..................................7
           2.2 Compiling Programs......................................7
       3.0 Email Basics................................................8
           3.1 Your Email Account......................................8
           3.2 Email Address Format....................................8
           3.3 MIME Extensions.........................................8
               3.3.1 Quoted-Printable Encoding.........................9
               3.3.2 Binary Attachments................................9
           3.4 Your SMTP Host Name.....................................9
       4.0 Theory of Operation........................................10
       5.0 Application Notes..........................................11
           5.1 Key Codes..............................................11
           5.2 Embedded HTML..........................................11
           5.3 Secure Email...........................................11
           5.4 Verifying Users........................................11
           5.5 Downloading Attachments................................12
           5.6 Auto Dial..............................................12
           5.7 Windows 95 and Dial-up Networking......................12
           5.8 Error Messages.........................................12
       6.0 Versions of SEE............................................13
           6.1 Shareware Version......................................13
           6.2 Student Version........................................13
           6.3 Professional Version...................................13
       7.0 Using SEE with Other Languages.............................14
       8.0 Problems...................................................14
       9.0 Example Programs...........................................15
      10.0 Legal Issues...............................................17
           10.1 Registration..........................................17
           10.2 Academic Discount.....................................17
           10.3 License...............................................18
           10.4 Warranty..............................................18
      11.0 Summary....................................................19
           11.1 Revision History......................................19
           11.2 SEE4D Function Summary................................20
           11.3 SEE4D Error Return Code List..........................21









     SEE4D Users Manual                                         Page 2

      1.0 Introduction

      The SMTP/POP3 Email Engine for Delphi (SEE4D) is a library of
      functions providing direct and simple control of the SMTP (Simple
      Mail Transport Protocol) and POP3 (Post Office 3) protocols.

      A simple interface allows sending and receiving email, including
      multiple MIME base64 and quoted-printable encoded attachments.
      Knowledge of Winsock and TCP/IP is not needed. SEE4D includes
      multiple Win16 and Win32 Visual Basic example programs.

      With SEE4D, you can write GUI or console mode programs that easily:

      (1) Send email with optional MIME attachments.
      (2) Get the number of messages on your email server.
      (3) Get the header lines from any email on your server, without
          reading the entire email.
      (4) Delete any email on the server without reading it first.
      (5) Receive any email on your server including MIME attachments.
      (6) Run up to 128 independent WIN32 threads concurrently.

      Several example programs are included, demonstrating the SMTP and
      POP3 functions.

      SEE4D supports and has been tested with Borland Delphi 1 through 4.

      Both Win16 and Win32 DLLs (Dynamic Link Libraries) are provided.
      SEE4D can be used with Windows 3.X, 95/98, and NT. The SEE4D DLLs
      (SEE16.DLL and SEE32.DLL) can also be used from any language (C/C++,
      ACCESS, EXCEL, PowerBASIC Console Compiler, Visual Basic, Fujitsui
      COBOL, ABSOFT Fortran, etc.) capable of calling the Windows API.

      When comparing SEE against our competition, note that:

      (1) SEE4D is a standard Windows DLL (NOT an OCX or ActiveX control)
          and is much smaller than a comparable OCX or ActiveX control.
      (2) Both WIN16 and WIN32 DLLs are included.
      (3) SEE4D does NOT depend on ActiveX or similar "support" libraries.
      (4) The WIN32 version of SEE4D is fully threadable.
      (5) The SEE4D functions can be called from applications not capable
          of using controls.

      (6) SEE4D is fully thread-safe.


      We also have versions of SEE for Visual Basic (SEE4VB) C/C++ (SEE4C)
      and PowerBASIC (SEE4PB). But note that all versions use the same
      DLLs.










     SEE4D Users Manual                                         Page 3


      +-------------------------------------------------------------------+
      |                                                                   |
      | var                                                               |
      |   Code : Integer;                                                 |
      |   HostPtr, FromPtr, NullPtr : PChar;                              |
      |   ToPtr, SubjPtr, MsgPtr, AttPtr : PChar;                         |
      | begin                                                             |
      |   {allocate buffers}                                              |
      |   GetMem(HostPtr,64); StrPCopy(HostPtr, 'mail.yourisp.net');      |
      |   GetMem(FromPtr,64); StrPCopy(FromPtr, 'you<you@yourisp.net>');  |
      |   GetMem(NullPtr, 4); StrPCopy(NullPtr, '');                      |
      |   GetMem(ToPtr,  64); StrPCopy(ToPtr,   '<friend@hisisp.com>');   |
      |   GetMem(SubjPtr,64); StrPCopy(SubjPtr, 'This is a test');        |
      |   GetMem(MsgPtr, 64); StrPCopy(MsgPtr,  'Hello from SEE4D...');   |
      |   GetMem(AttPtr, 64); StrPCopy(AttPtr,  'see4d21.zip');           |
      |   {attach SEE and connect to POP3 server}                         |
      |   Code := seeAttach(1, SEE_KEY_CODE)                              |
      |   Code := seeSmtpConnect(HostPtr, FromPtr, NullPtr);              |
      |   {send the email}                                                |
      |   Code := seeSendEmail(ToPtr,NullPtr,NullPtr,SubjPtr,             |
      |                        MsgPtr,AttPtr);                            |
      |   {free buffers & close}                                          |
      |   FreeMem(HostPtr,64); FreeMem(FromPtr,64); FreeMem(NullPtr,4);   |
      |   FreeMem(ToPtr,64);   FreeMem(SubjPtr,64);                       |
      |   FreeMem(MsgPtr,64);  FreeMem(AttPtr, 64);                       |
      |   Code := seeClose(0);                                            |
      |   Code := seeRelease;                                             |
      +-------------------------------------------------------------------+

      In the example program above, seeAttach is called to initialize SEE
      and then seeSmtpConnect is called to connect to the SMTP mail host.
      The SMTP server host name and your email address are required, while
      the "Reply-To" entry is optional.

      seeSendEmail is then called, passing the addressee lists. The primary
      addressee is given in the "To List". The CC ("Carbon Copy") lists
      additional recipients, as does the BCC (Blind Carbon Copy) list. The
      subject contains the email subject line. The message text is next. If
      it starts with the '@' symbol, it is considered the name of the file
      containing the email message. Last, the filename of any binary
      attachment is specified. All fields in seeSendEmail are optional
      except the first.

      After returning from seeSendEmail, the seeClose function is called to
      close the connection to the SMTP server. Lastly, seeRelease is called
      last to perform SEE termination processing and release the Winsock.

      Refer to the SEE4D Reference Manual for individual function details.









     SEE4D Users Manual                                         Page 4

      1.1 Email Server and Client Compatibility

      The SMTP/POP3 Email Engine library has been tested against several
      UNIX and Windows NT email servers, as well as with several email
      clients, including Eudora (Lite & Pro), Microsoft Outlook, Pegasus,
      Calypso, PM Mail 98, Actif Mail, and Netscape.

      1.2 User Support

      We want you to be successful in developing your applications using
      SEE4D! We are committed to providing the best library that we can. If
      you have any suggestions or comments, please let us know.

      If you are having a problem using SEE4D, email us at

                support@marshallsoft.com

      You can also reach us at 256-881-4630 between 7:00 AM and 7:00 PM CST
      Monday through Friday. You can often contact us on the weekend.


      The latest versions of our products are available on our web site at

           http://www.marshallsoft.com

      and on our anonymous ftp site at

           ftp://ftp.marshallsoft.com/marshallsoft

      The MarshallSoft Computing newsletter "Comm Talk" is published
      quarterly on our web site.  It discusses various communications
      problems and solutions well as related information.

      1.3 ASP Ombudsman

      MarshallSoft Computing, Inc. is a member of the Association of
      Shareware Professionals (ASP).  ASP wants to make sure that the
      shareware principle works for you.  If you are unable to resolve a
      shareware-related problem with an ASP member by contacting the member
      directly, ASP may be able to help. The ASP Ombudsman can help you
      resolve a dispute or problem with an ASP member, but does not provide
      technical support for members' products. Please write to the ASP
      Ombudsman at 157-F Love Ave., Greenwood, IN 26142 USA, FAX
      317-888-2195, or send email to omb@asp-shareware.org.














     SEE4D Users Manual                                         Page 5

      1.4 Installation


      (1) Before installation of SEE4D, your Borland Delphi compiler (any
          version) should already be installed on your system and tested.

      (2) Exit Windows into DOS, or start a DOS window:

      (3) Create your SEE project directory, copy the SEE archive, then
          unzip the archive. For example:

          MKDIR   SEE4D
          PKUNZIP SEE4D30.ZIP SEE4D

      (4) Execute INSTAL16.BAT or INSTAL32.BAT, which will copy the proper
          files.

          INSTAL16    ++ for Win16 (Delphi 1)
          INSTAL32    ++ for Win32 (Delphi 2 and above)

          Alternatively, one can run INSTALL.BAT:

          INSTALL 16   ++ for Win16
          INSTALL 32   ++ for Win32

      (5) You're ready to compile & run!

          The INSTALL.BAT program (called by INSTAL16.BAT or INSTAL32.BAT)
          copies SEE32.DLL (or SEE16.DLL) to either C:\WINDOWS (for Windows
          3.1/95/98) or C:\WINNT (for Windows NT 4.0).

      1.5 Uninstalling

      Uninstalling SEE4D is very easy. SEE does NOT modify the registry.
      First, delete the SEE project directory created when installing
      SEE4D. Second, delete SEE16.DLL and SEE32.DLL from your Windows
      directory, typically C:\WINDOWS for Windows 3.1/95/98 or C:\WINNT for
      Windows NT. Thats it!




















     SEE4D Users Manual                                         Page 6

      2.0 Library Overview

      2.1 Dynamic Link Libraries

      SEE4D includes both Win16 [SEE16] and a Win32 [SEE32] dynamic link
      library (DLL). A DLL is characterized by the fact that it need not be
      loaded until required by an application program and that only one
      copy of the DLL is necessary regardless of the number of application
      programs that use it. Contrast this to the traditional static library
      which is bound to each and every application that uses it at link
      time.

      2.2 Compiling Programs

      The example programs are compiled from the Delphi development
      environment using the provided Delphi project files (*.DPR). Be sure
      to run the install program (INSTAL16.BAT or INSTAL32.BAT) before
      compiling.

      See section 9.0 "Example Programs" for more details on each of the
      example programs.

      SEE4D may also be used with "Borland Pascal for Windows".



































     SEE4D Users Manual                                         Page 7

      3.0 Email Basics

      3.1 Your Email Account

      Your email account is hosted on a computer which has a permanent
      connection to the Internet. Email is sent to you over the Internet using
      the SMTP (Simple Mail Transport Protocol) and is stored on disk until
      you retrieve it using the POP3 (Post Office Protocol 3) or IMAP
      (Internet Message Access Protocol) protocol. POP3 is a subset of IMAP,
      so the POP3 protocol can be used to email from a IMAP email server.

      The SMTP/POP3 Email Engine (SEE) is used to send and receive email using
      the SMTP and POP3 protocols.

      3.2 Email Address Format

      Email addresses are always specified as "xxx<yyy@zzz>" where

         (1) xxx is the optional "real name".

         (2) yyy@zzz is the official email address,
             where yyy is your account name, and
             zzz is where your email account is hosted.

         (3) The brackets are required.

      For example, my email address can be specified by any of the
      following:

         (1) <mike@marshallsoft.com>
         (2) Mike<mike@marshallsoft.com>
         (3) Mike Marshall <mike@marshallsoft.com>

      Multiple email addresses can be stringed together separated by
      commas, as in:

         "<mike@myisp.com>,<pam@myisp.com>,<lauren@myisp.com>"

      See the sample programs for many examples of use.

      3.3 MIME Extensions

      Internet mail can only transport 7-bit ASCII characters. Multipurpose
      Internet Mail Extensions (MIME) are used to allow the attachment of
      binary data to an email message.

      The standard MIME attachment types are "quoted-printable" and "base64".
      The SMTP/POP3 Email Engine library supports both.










     SEE4D Users Manual                                         Page 8

      3.3.1 Quoted-Printable Encoding

      Quoted-Printable encoding is used for three primary purposes: (1) to
      embed binary values into a email message, typically for use with
      foreign alphabets, (2) to send email messages wider than 76
      characters, and (3) to embed HTML text into the email message.

      To enable Quoted-Printable encoding, call

          seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, 1)

      before calling seeSendEmail.

      To embed HTML text into your email message, which can be rendered by
      email clients capable of interpreting HTML (such as Outlook Express),
      call

          seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, QUOTED_HTML)

      To disable Quoted-Printable encoding, call

          seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, 0)

      3.3.2 Binary Attachments

      Binary attachments are encoded using MIME base-64. Most all email
      clients (such as made by Eudora, Netscape, and Microsoft) can decode
      MIME base-64 attachments.

      To attach a file to your email, you specify the filename as the last
      argument of the seeSendEmail function. Refer to the reference manual
      for more details. Multiple attachments are listed with commas
      separating them, such as "file1.zip,file2.zip,file3.zip".

      3.4 Your SMTP/POP3 Host Name

      In order to send or receive email, you must know the name (or IP
      address) of your mail server. All email client programs (Eudora,
      etc.) must have this name in order to send email.

      Typically, your email server name will be "mail.XXX.YYY" where XXX.YYY
      is the name of the computer which hosts your email account. If you
      aren't sure of your email host name, look in the setup of your email
      client program or ask your system administrator.














     SEE4D Users Manual                                         Page 9

      4.0 Theory Of Operation

      The SMTP/POP3 Email Engine is state driven. This means that each call to
      SEE functions (that access the server) is broken down into sequential
      steps, each of which can be performed within a second or two.

      There are two ways in which SEE is used: (1) indirect use of the
      state engine, and (2) direct use of the state engine.

      4.1 Indirect Method

      The first (or "indirect") way to use the SEE library is to allow all SEE
      function calls to automatically call the SEE driver (seeDriver) before
      returning. This is the default way that SEE operates.

      The major advantage of this approach is that each SEE function
      returns only after it has completely finished. The disadvantage of
      this approach is that some functions may run for a considerable
      amount of time during which time the calling application must wait.

      Refer to the sample programs MAILER and STATUS for an example of this
      approach.

      4.2 Direct Method

      The second (or "direct") way that the SEE state driver is used is to
      call it (seeDriver) directly. In order to operate this way, the
      function seeIntegerParam must be called which sets the AUTO_CALL
      flag to off:

         seeIntegerParam(Chan,SEE_AUTO_CALL_DRIVER, 0)

      After the above statement is executed, the state driver (seeDriver)
      must be called after all other SEE functions that access the server.
      For example,

         Code := seeSmtpConnect(...);
         If Code < 0 Then
           begin
             {handle error here . . .}
           end;
         Repeat   {call the driver}
           Code := seeDriver();
           If Code < 0 Then
             begin
               {handle error here . . .}
               exit;
             end;
           {do something here . . .}
         Until Code = 0;

      The major advantage of the direct approach is that the calling
      application can perform other work such as reporting the progress of
      large downloads. The disadvantage is the extra code that must be
      written to call seeDriver.



     SEE4D Users Manual                                         Page 10

      5.0 Applications Notes

      5.1 Key Codes

      When you register SEE, you will receive a new set of DLL's and a key
      code for your DLL's. Pass this keycode as the second argument to
      seeAttach. The keycode will be found in the file KEYCODE.PAS. The
      keycode for the shareware version is 0.

      5.2 Embedded HTML

      Some email client programs, such as Microsoft OutLook Express, embed
      HTML (Hyper-Text Markup Language) into the text of their email. This
      is NOT an attachment. You can see what the text should look like by
      viewing it with your web browser.

      Enable HTML quoting by calling

          seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, QUOTED_HTML);

      5.3 Secure Email

      There are two ways to implement secure email using SEE4D. The first
      way is to use a package such as "Pretty Good Privacy" to encrypt your
      message, optionally compress the file using PKZIP or similar product,
      and then send the encrypted message as an attachment.

      The second way to implement secure mail is to encrypt your message
      with the encryption software of your choice, then convert the
      (usually binary) encrypted message to ASCII using seeEncodeBuffer. On
      the receive side, you must extract the coded text from the message,
      decode it with seeDecodeBuffer, and then decrypt it with your
      decryption software.

      5.4 Verifying Users

      The seeVerifyUser function can be used to verify an email account
      with the SMTP server which hosts the email account.

      However, some SMTP servers may refuse to connect to non-local
      clients. Those that do connect may refuse to honor the verify
      request. This means that a negative verify response does NOT mean
      that the email address is necessarily incorrect.















     SEE4D Users Manual                                         Page 11

      5.5 Downloading Attachments

      Specify a download directory when calling seeGetEmailFile so that you
      don't overwrite any files in the current directory. This is an
      important security precaution.

      For example:

         seeGetEmailFile(1, "email.txt", ".\download", ".\download")

      Another option is to enable filename prefixing by calling
      seeIntegerParam(Chan, SEE_FILE_PREFIX, 1) which will prefix "1-",
      "2-", etc to the filenames of all attachments.

      5.6 Auto Dial

      To allow Dial-Up Networking (DUN) to dial up your ISP when you access
      the Winsock:

      (1) Open the DUN folder in "My Computer", and choose
      "Connections/Settings" from menu bar. Uncheck "prompt for information
      before dialing" and choose "Don't prompt to use Dial-Up Networking".

      (2) Use the Windows REGEDIT program to change value "00 00 00 00" to
      the value "00 00 00 01" in the Windows Registry for the entry
      HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet
      Settings/EnableAutodial.

      (3) Use the Windows REGEDIT program to change value "00 00 00 00" to
      the value "00 00 00 01" in the Windows Registry for the entry
      HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet
      Settings/EnableAutodisconnect.

      (4) Use the Windows REGEDIT program to change value "14 00 00 00" to
      the value "01 00 00 00" in the Windows Registry for the entry
      HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet
      Settings/DisconnectIdleTime. This changes the idle time (until
      disconnect) from 20 minutes (hex 14) to one minute.

      Note that auto dialing works only for Win32 application programs.

      5.7 Windows 95 and Dial-up Networking

      If you are running Windows 95, you should install the latest Dial-up
      Netwoking (DUN) patches from Microsoft. This applies to Windows 95
      only. The patch can be found at

      http://www.microsoft.com/windows/downloads/contents/
      updates/w95dialupnetw/default.asp

      5.8 Error Messages

      Error messages are listed in the file ERRORS.TXT. These messages can
      also be found by calling seeErrorText at runtime.




     SEE4D Users Manual                                         Page 12

      6.0 Versions of SEE

      The SMTP/POP3 Email Engine (SEE) library is available in three
      versions. All three versions have identical functionality.

      6.1 Shareware Version

      The shareware version can be differentiated from the other two
      versions by:

      (1) The shareware reminder screen is displayed at startup.

      (2) The "X-OEM: " header in all outgoing email is branded with
          "X-OEM: SHAREWARE VERSION [http://www.marshallsoft.com]"

      (3) All email is followed by the following two lines:
          "______________________________________________________________"
          "MarshallSoft SMTP Engine. Programmers see www.marshallsoft.com"

      The Shareware version may not be used for commercial purposes.

      6.2 Student Version

      The student version can be differentiated from the other two versions
      by:

      (1) There is no shareware reminder screen.

      (2) The "X-OEM: " header in all outgoing email is branded with
          "X-OEM: STUDENT VERSION [http://www.marshallsoft.com]"

      (3) There are no lines added to the end of the email as in the
          shareware version.

      The Student version may not be used for commercial purposes.

      6.3 Professional Version

      The professional version can be differentiated from the other two
      versions by:

      (1) There is no shareware reminder screen.

      (2) The "X-OEM: " header in all outgoing email is branded with your
          company name.

      (3) There are no lines added to the end of the email as in the
          shareware version.

      The professional version may be distributed with your application as
      per the the software license.







     SEE4D Users Manual                                         Page 13

      7.0 Using SEE with Other Languages

      The SMTP/POP3 Email Engine DLLs can be used with any application
      written in any language capable of calling the Windows 16-bit or
      32-bit API.

      Also note that there are C/C++ (SEE4C), Visual Basic (SEE4VB),
      PowerBASIC (SEE4PB), COBOL (SEE4CB), and Fortran (SEE4F) versions of
      SEE.

      8.0 Problems

      First, be sure you are passing the proper key code. See section 5.1.
      Before attempting to run any of the example programs, you should
      already be able to connect to the Internet (or your TCP/IP LAN) and
      run your email client program, such as Eudora or Pegasus Mail.

      Before attempting to run any of the example programs, you should
      already be able to connect to the Internet and run your email client
      program, such as Eudora or Pegasus Mail.

      If you cannot get your application to run properly, first compile and
      run the example programs. If you call us to report a possible bug in
      the library, the first thing we will ask is if the example programs
      run correctly.

      Be sure to test the code returned from SEE functions. Then, call
      seeErrorText to get the text associated with the error code.

      For example:

      +-------------------------------------------------------------------+
      |                                                                   |
      | var                                                               |
      |   Code : Integer;                                                 |
      |   Ptr  : PChar;                                                   |
      | begin                                                             |
      |   GetMem(Ptr,80);                                                 |
      |   {get error text associated with error}                          |
      |   Code := seeErrorText(Chan, Code, Ptr, 80)                       |
      |   {display error text in string StrPas(Ptr) }                     |                                   *
      |   . . .                                                           |
      |                                                                   |
      +-------------------------------------------------------------------+

      If you encounter a problem that you cannot resolve, give us a call or
      email us at support@marshallsoft.com.











     SEE4D Users Manual                                         Page 14

      9.0 Example Programs

      Five example programs (VERSION, HELLO, MAILER, STATUS, and READER)
      are included in SEE4D.

      Each of the example programs uses the "display" unit and the "SEE"
      unit:

         DISPLAY.PAS  : Display unit source code.
         SEE.PAS      : SEE Unit source code.

      The SEE.PAS code is copied from either SEE16.PAS, SEE16NT.PAS, or
      SEE32.PAS by the INSTALL.BAT program at installation time.

      The DISPLAY.PAS code contains 4 procedures:

         DisplayChar   : Displays character.
         DisplayString : Displays string.
         DisplayLine   : Displays line.
         DisplayError  : Displays error message.

      After compiling and running each of the example programs, edit the
      source code and forms so that your SMTP and POP3 server name and and
      return email address are either hard-coded or read from a file.

      9.1 VERSION

      This simple program displays the SEE version number, build number,
      and registration string taken from SEE16.DLL or SEE32.DLL.

      The VERSION program does not connect to the Internet.

      The VERSION project files are:

         VER_PRJ.DPR  : Delphi project file.
         VER_PGM.DFM  : Delphi form file.
         VER_PGM.PAS  : Program source code.

      9.2 HELLO

      The HELLO program emails a short message. Before compiling,
      HELO_PGM.PAS must be edited with your email parameters.

      The HELLO project files are:

         HELO_PRJ.DPR  : Delphi project file.
         HELO_PGM.DFM  : Delphi form file.
         HELO_PGM.PAS  : Program source code.

      Compare HELLO with the MAILER example program.








     SEE4D Users Manual                                         Page 15

      9.3 MAILER

      MAILER emails a message, including optional MIME attachments.

      The MAILER project files are:

         MAIL_PRJ.DPR  : Delphi project file.
         MAIL_PGM.DFM  : Delphi form file.
         MAIL_PGM.PAS  : Program source code.

      Note that the MAILER program uses the "indirect" method (see section
      4.1). The function seeDriver is called automatically. A Hour Glass
      cursor is displayed while your email is being sent to the server.

      9.4 STATUS

      STATUS reads the number of email messages waiting on your POP3
      server, and displays the "DATE:", "FROM:", and "SUBJECT:" header
      fields from each email.

      The STATUS project files are:

         STAT_PRJ.DPR  : Delphi project file.
         STAT_PGM.DFM  : Delphi form file.
         STAT_PGM.PAS  : Program source code.

      9.5 READER

      STATUS can read email, including multiple MIME attachments, from your
      POP3 server, optionally deleting each email after being read.

      The READER project files are:

         READ_PRJ.DPR  : Delphi project file.
         READ_PGM.DFM  : Delphi form file.
         READ_PGM.PAS  : Program source code.

      Note that the READER program uses the "direct method" (see section
      4.2). The seeDriver is explicitly called. The progress of the
      incoming email is displayed.


















     SEE4D Users Manual                                         Page 16

      10.0 Legal Issues

      10.1 Registration

      The professional version of SEE4D may be registered for $95 plus $7
      S&H ($12 outside of North America).

      The professional version DLL is also branded with your company name.

      To order, contact us as shown on the title page of this manual. All
      prices are guaranteed for one year from the release date.

      Multiple copy discounts (3 or more) and site licenses are available.
      Please call for details.

      We  accept American Express, VISA, MasterCard, Discover, checks in US
      dollars drawn on  a  US  bank,  International  Postal  Money  Orders,
      purchase orders (POs) from recognized US schools and companies listed
      in  Dun  &  Bradstreet,  and  COD  (street  address  and phone number
      required) within the USA (plus a $5 COD charge).

      For credit card orders, be sure to include the account number, the
      expiration date, the exact name on the card, and the complete card
      billing address (the address to which the credit card bill is
      mailed).

      Print the file INVOICE.TXT if a "Pro Forma" invoice is needed. The
      registered package includes:

           o  Win16 & Win32 SEE Libraries w/o shareware screens.
           o  Printed Users Manual & Reference Manual.
           o  Telephone and email support for one year.

      The registered user will receive the latest version of SEE4D shipped
      by US second day priority mail (packet airmail overseas).  A 3.5"
      HD diskette is provided.

      10.2 Academic Discount

      We offer an "academic price" of 40% off the normal price for prepaid
      email orders to faculty and full time students currently enrolled in
      any accredited high school, college, or university. To qualify for
      the discount, your school must have a web site and you must have an
      email address at your school.

      When ordering, ask for the "academic discount", or enter "student
      at" (or "faculty at") and your schools web site address (URL) in the
      comments field of the order form on our web site order page . Your
      order will be sent to your email address at your school.

      This offer is not retroactive and cannot be used with any other
      discount. Products bought with academic pricing can not be used for
      any commercial purpose.





     SEE4D Users Manual                                         Page 17

      10.3 License

      MarshallSoft Computing, Inc. grants the registered user of SEE4D the
      right to use one copy of the SEE4D DLL's on a single computer in the
      development of any software product. The user may not use the library
      on more than one computer at the same time.

      The "student" ($57) registered DLL's may not be distributed under any
      circumstances, nor may they be used for any commercial purpose.

      The "professional" ($95) registered DLL's may be distributed (without
      royalty) in object form only, as part of the user's compiled
      application. The registered DLL's may NOT be distributed as part of
      any software development system (compiler or interpreter) without our
      express written permission.

      When you register, you will be sent a "key code" which enables access
      to the registered DLL's. You may NOT distribute or make known this
      key code. (see section 5.1 "Key Code").

      10.4 Warranty

      THIS SOFTWARE, WHETHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
      LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      A PARTICULAR PURPOSE, AND ALL SUCH WARRANTIES ARE EXPRESSLY AND
      SPECIFICALLY DISCLAIMED. NEITHER MARSHALLSOFT COMPUTING, INC.  NOR
      ANYONE ELSE WHO HAS BEEN INVOLVED IN THE CREATION, PRODUCTION, OR
      DELIVERY OF THIS SOFTWARE SHALL BE LIABLE FOR ANY INDIRECT,
      CONSEQUENTIAL, OR INCIDENTAL DAMAGES ARISING OUT OF THE USE OR
      INABILITY TO USE SUCH SOFTWARE EVEN IF MARSHALLSOFT COMPUTING, INC.
      HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES OR CLAIMS. IN NO
      EVENT SHALL MARSHALLSOFT COMPUTING, INC.'S LIABILITY FOR ANY SUCH
      DAMAGES EVER EXCEED THE PRICE PAID FOR THE LICENSE TO USE THE
      SOFTWARE, REGARDLESS OF THE FORM OF THE CLAIM. THE PERSON USING THE
      SOFTWARE BEARS ALL RISK AS TO THE QUALITY AND PERFORMANCE OF THE
      SOFTWARE.

      Some states do not allow the exclusion of the limit of liability for
      consequential or incidental damages, so the above limitation may not
      apply to you.

      This agreement shall be governed by the laws of the State of Alabama
      and shall inure to the benefit of MarshallSoft Computing, Inc.  and
      any successors, administrators, heirs and assigns.  Any action or
      proceeding brought by either party against the other arising out of
      or related to this agreement shall be brought only in a STATE or
      FEDERAL COURT of competent jurisdiction located in Madison County,
      Alabama. The parties hereby consent to in personam jurisdiction of
      said courts.









     SEE4D Users Manual                                         Page 18

      11.0 Summary

      11.1 Revision History

      The SMTP/POP3 Email Engine DLLs (SEE16.DLL and SEE32.DLL) are written
      in ANSI C. All language versions of SEE (C/C++, Delphi, Visual Basic,
      PowerBASIC, COBOL, Fortran) use the same identical DLLs.


      Version 2.0: October 9, 1998.

          o  Initial release for Delphi.

      Version 2.1: December 4, 1998.

          o  Time zone calculated automatically.
          o  Fixed bug in seeClose.
          o  Corrected POP3 problem when boundary definition on 2nd line.
          o  Added support for alternate MIME boundaries.
          o  Added seeVerifyUser function.
          o  Added SEE_GET_REGISTRATION, SEE_GET_CONNECT_STATUS,
             SEE_GET_ATTACH_COUNT, and SEE_GET_LAST_RESPONSE.
          o  Added GETDOC, SEEVER, and VERUSR example programs.
          o  SMTP performance improved.
          o  Added seeEncodeBuffer and seeDecodeBuffer functions.
          o  Added SEE_FILE_PREFIX and SEE_SET_REPLY parameters.

      Version 3.0: April 19, 1999.

          o  Modified SEE to be fully threadable (adding seeAttach and
             seeRelease).
          o  Added seeGetEmailUID function.
          o  Handles "inline" email text properly.
          o  Optionally decodes unnamed attachments.
          o  Added ability to add header lines (SEE_SET_HEADER).
          o  Can use alternate ports for SMTP or POP3.
          o  Win16 version can get time zone from TZ environment variable.
          o  Quoted-printable messages can handle soft line breaks.
          o  Quoted-printable message can handle embedded HTML text.



















     SEE4D Users Manual                                         Page 19

      11.2 SEE4D Function Summary

      Refer to the SEE4D Reference Manual (SEE4D_R.TXT) for detailed
      information on the communications and support functions.  A one line
      summary of each function follows.

      There are 23 functions in the SEE library.

      +-------------------+-----------------------------------------------+
      |        seeAttach  |  Attaches SEE.                                |
      |         seeClose  |  Closes SMTP/POP3 Email Engine.               |
      |         seeDebug  |  Returns debug information.                   |
      |  seeDecodeBuffer  |  Decodes base-64 buffer.                      |
      |   seeDeleteEmail  |  Deletes email.                               |
      |        seeDriver  |  Executes next SEE state.                     |
      |  seeEncodeBuffer  |  Encodes base-64 buffer.                      |
      |     seeErrorText  |  Get text associated with error code.         |
      |   seeExtractText  |  Extracts line contining specified text.      |
      | seeGetEmailCount  |  Get number of emails waiting on server.      |
      |  seeGetEmailFile  |  Read email file and save to disk.            |
      |  seeGetEmailSize  |  Get size of email message on server.         |
      | seeGetEmailLines  |  Read email lines into buffer.                |
      |   seeGetEmailUID  |  Get email message user ID string.            |
      |  seeIntegerParam  |  Sets SEE integer parameter.                  |
      |   seePop3Connect  |  Connects to POP3 server.                     |
      |       seeRelease  |  Releases SEE.                                |
      |     seeSendEmail  |  Sends email and attachments.                 |
      |   seeSmtpConnect  |  Connects to SMTP server.                     |
      |    seeStatistics  |  Returns runtime statistics.                  |
      |   seeStringParam  |  Sets SEE string parameter.                   |
      | seeVerifyFormat   |  Check email address format.                  |
      |   seeVerifyUser   |  Check email address with SMTP server.        |
      +-------------------+-----------------------------------------------+

























     SEE4D Users Manual                                         Page 20

      11.3 SEE4D Error Return Code List

      +-----------------------+-----------------------------------------+
      | SEE_NO_ERROR          | No error.                               |
      | SEE_CANNOT_COMPLY     | Cannot comply. Not always an error.     |
      +-----------------------+-----------------------------------------+
      | SEE_ABORTED           | The DLL has been corrupted.             |
      | SEE_ALREADY_ATTACHED  | seeAttach already called.               |
      | SEE_ALREADY_CONNECTED | Already connected to server.            |
      | SEE_ATTACH_PATH_NULL  | Attachment is missing.                  |
      | SEE_BACK_OVERFLOW     | Response buffer has overflowed.         |
      | SEE_BAD_ADDRESS_CHAR  | Bad character in email address.         |
      | SEE_BAD_DOTTED        | Bad dotted address.                     |
      | SEE_BUFFER_NULL_ARG   | Required buffer is missing.             |
      | SEE_BAD_KEY_CODE      | Bad key code (2nd argumnet in seeAttach)|
      | SEE_BUFFER_SIZE_ARG   | Buffer size argument is not positive.   |
      | SEE_CANNOT_ATTACH     | Cannot access WINSOCK.                  |
      | SEE_CANNOT_CREATE     | Cannot create file.                     |
      | SEE_CANNOT_OPEN       | Cannot open file.                       |
      | SEE_CHAN_OUT_OF_RANGE | Channel number out of range.            |
      | SEE_CONNECT_ERROR     | Error attempting to connect.            |
      | SEE_EMAIL_PATH_NULL   | Required file path is missing.          |
      | SEE_EMPTY_ADDRESS     | EMPTY email address.                    |
      | SEE_EOF               | End of file (socket has been closed).   |
      | SEE_FILENAME_NULL_ARG | Required filename is missing.           |
      | SEE_FROM_NULL_ARG     | FromPtr is NULL.                        |
      | SEE_IS_BLOCKING       | Socket is currently blocking.           |
      | SEE_MISSING_AT_CHAR   | Missing '@' character in email address. |
      | SEE_MISSING_FROM      | Missing FROM email address.             |
      | SEE_MISSING_LEFT      | Missing '<' delimiter in email address. |
      | SEE_MISSING_RIGHT     | Missing '>' terminating email address.  |
      | SEE_MSG_NBR_RANGE     | Message number out of range.            |
      | SEE_NO_RECEIPIENTS    | Must have at least one receipient.      |
      | SEE_NO_SERVER         | Cannot find Smtp server.                |
      | SEE_NOT_ATTACHED      | Must call seeAttach first.              |
      | SEE_NOT_CONNECTED     | Not connected to server                 |
      | SEE_NULL_POINTER      | Unexpected NULL pointer.                |
      | SEE_PASS_NULL_ARG     | Required POP3 password argument missing.|
      | SEE_POP3_ERROR        | Error returned by POP3 server.          |
      | SEE_POP3_ONLY         | Must be connected to POP3 server.       |
      | SEE_RCPT_NULL_ARG     | ToPtr is NULL.                          |
      | SEE_SMTP_ERROR        | SMTP returned error.                    |
      | SEE_SMTP_NULL_ARG     | SMTP Server not specified.              |
      | SEE_SMTP_ONLY         | Must be connected to SMTP server.       |
      | SEE_SOCK_READ_ERROR   | Socket read error.                      |
      | SEE_SOCK_WRITE_ERROR  | Socket write error.                     |
      | SEE_TIMED_OUT         | Socket timed out awaiting data.         |
      | SEE_TOO_MANY_AT_CHARS | Too many '@' symbols in email address.  |
      +-----------------------+-----------------------------------------+









     SEE4D Users Manual                                         Page 21


