SMTP/POP3 Email Engine

Users Manual


(SEE_USR)


Version 3.2

January 17, 2000




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



Copyright (C) 2000
All rights reserved



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


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


MarshallSoft is a member of the Association of Shareware Professionals

MARSHALLSOFT is a registered trademark of MarshallSoft Computing.

TABLE OF CONTENTS


1 Introduction                        
  1.1 Documentation                   
  1.2 Email Client Compatibility      
  1.3 User Support                    
  1.4 ASP Ombudsman                   
  1.5 Ordering                        
2 Library Overview                    
  2.1 Dynamic Link libraries          
  2.2 GUI and Console Mode            
  2.3 Using the Library               
3 Email Basics                        
  3.1 Your Email Account              
  3.2 Email Address Format            
  3.3 MIME Extensions                 
  3.4 Your SMTP/POP3 Host Name        
  3.5 Auto Dial                       
  3.6 Proxy Servers                   
4 Theory of Operation                 
5 Application Notes                   
  5.1 Key Codes                       
  5.2 Embedded HTML                   
  5.3 Wide Text                       
  5.4 Secure Email                    
  5.5 Verifying Users                 
  5.6 Downloading Attachments         
  5.7 Message Status                  
  5.8 Return Receipt                  
  5.9 Registration Apps               
6 Versions of SEE                     
  6.1 Shareware Version               
  6.2 Student Version                 
  6.3 Professional Version            
7 Using SEE with Other Languages      
8 Problems                            
9 Legal Issues                        
  9.1 Registration                    
  9.2 License                         
  9.3 Warranty                        
10 Summary                            
   10.1 SEE Function Summary          
   10.2 SEE Error Return Code List    


1  Introduction

This manual applies to the SMTP/POP3 Email Engine (SEE) for all supported languages. 

We have versions of SEE for C/C++ (SEE4C), Delphi (SEE4D), Visual Basic (SEE4VB), PowerBASIC 
(SEE4PB), Visual FoxPro (SEE4FP), Visual dBase (SEE4DB), Alaska Xbase++ (SEE4XB), COBOL 
(SEE4CB), and Fortran (SEE4F).  All versions of SEE use the same DLLs (SEE16.DLL or SEE32.DLL).

We also have declaration files and example programs for a few other languages (such as MATLAB).

1.1  Documentation Set 

The complete set of documentation consists of three manuals in three formats. This is the second manual 
(SEE_USR) in the set.

o SEE4x Programmers Manual (SEE4x.DOC, SEE4x.TXT, SEE4x.HTM) 
o SEE Users Manual (SEE_USR.DOC, SEE_USR.TXT, SEE_USR.HTM) 
o SEE Reference Manual (SEE_REF.DOC, SEE_REF.TXT, SEE_REF.HTM) 

Each manual comes in three formats:

o Microsoft Word (files ending in .DOC). The best format for printing manuals. 
o Hyper Text (files ending in .HTM). Use any web browser to read. 
o ASCII Text (files ending in .TXT). 

The SEE4x Programmers Manual is the language specific manual. All language dependent programming 
issues are discussed in this manual.  Read this manual first.

The SEE Users Manual (SEE_USR) discusses email processing as well as language independent 
programming issues. Read this manual second.

The SEE Reference Manual (SEE_REF) contains details on each individual SEE function.

Use Microsoft Word 97/99 or Microsoft WordPad to print the document files.

1.2  Email Client Compatibility

The SMTP/POP3 Email Engine library has been tested against multiple email clients, including Eudora 
(Lite & Pro), Microsoft Outlook, Pegasus, Calypso, PM Mail 98, Actif Mail, Lotus Notes, and Netscape.

The library has also been tested against a variety of UNIX and Windows servers on our LAN and on the 
Internet.

1.3  User Support

We want you to be successful in developing your applications using SEE! 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 SEE, refer to section 8.0 "Problems". If you still cannot resolve your 
problem, 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 also often reach us on Saturday.

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/pub

Registered users can update to the latest DLLs at

http://www.marshallsoft.com/oem.htm

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

1.4  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.


1.5  Ordering

The professional version of  SEE may be registered for $105 (US dollars) for email delivery. The 
professional version DLL is also branded with your company name.

The fastest and easiest way to order is on our web site at

http://www.marshallsoft.com/order.htm

You can also order by completing INVOICE.TXT and emailing (orders@marshallsoft.com), mailing (see 
our address at top), or faxing (256-880-0925) it to us.

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, and purchase orders (POs) within the USA from recognized US 
schools and companies listed in Dun & Bradstreet.

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- not the 
banks). Please include card holder's signature on faxed orders.

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

(1) Win16 & Win32 SEE Libraries w/o shareware screens.
(2) Telephone and email support for one year.

1.5.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.

1.5.3  Disk Only

When ordering SEE, a 3.5" HD disk can be purchased for $5 for delivery to the, US, Canada, and Mexico. 
For all other destinations, the disk is $8.

See INVOICE.TXT or http://www.marshallsoft.com/order.htm

1.5.4  Disk and Printed Manuals

Printed manuals (see Section 1.1 "Documentation Set") are the same as in the SEE archive. Printed 
manuals can be purchased for $20 for delivery to the US, Canada, and Mexico. For all other destinations, 
printed manuals are $25. Printed manuals also comes with a 3.5" HD disk.

See INVOICE.TXT or http://www.marshallsoft.com/order.htm

2  Library Overview

2.1  Dynamic Link Libraries

SEE includes both Win16 [SEE16.DLL] and Win32 [SEE32.DLL] dynamic link libraries (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 a static library which is bound at link time to each and every application that uses it.

2.2  GUI and Console Mode

SEE functions can be called from WIN32 console mode programs as well as GUI programs. A "console 
mode" program is a Windows 95/98/NT WIN32 command line program running in a command window. 
Although console mode programs look like DOS programs, they are WIN32 programs which have access 
to the entire Windows address space.

2.3 Using the Library

The first SEE function that should be called in seeAttach, which initializes the SEE library and allocates 
necessary resources. seeAttach is typically called in the initialization section of your application.

After seeAttach is called, you are ready to connect to a SMTP server with seeSmtpConnect or a POP3 
server with seePop3Connect. Once connected you are ready to call the other SMTP or POP3 functions in 
order to send or receive email. 

After sending or receiving email, the connection to the server can be closed with seeClose. seeClose 
should not be called if the previous seeSmtpConnect or seePop3Connect failed.

Before exiting your application, seeRelease should be called. seeRelease should not be called if seeAttach 
failed.

The best way to get familiar with SEE is to try out one of the example programs.  The example programs 
are described in the SEE4x Users Manual:

SEE4C   C/C++               SEE4F   Fortran
SEE4D   Delphi              SEE4CB  COBOL
SEE4VB  Visual Basic        SEE4XB  Xbase++
SEE4PB  PowerBASIC
SEE4FP  Visual FoxPro
SEE4DB  Visual dBase


3  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 an 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 strung 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.

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 78 characters, and 
(3) to embed HTML text into the email message.

To enable Quoted-Printable encoding, call

seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, QUOTED_PLAIN)

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 (the default), call

seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, QUOTED_OFF)

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".

Only named attachments are decoded. To specify that unnamed attachments be decoded, call 

seeIntegerParam(0, SEE_DECODE_UNNAMED, 1)

before calling seeGetEmailFile.

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.


3.5  Auto Dial

3.5.1 Auto Dial for Windows 95/98

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

(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/InternetSettings/EnableAutodi
al

(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/InternetSettings/EnableAutodi
sconnect.

(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/InternetSettings/DisconnectId
leTime

This changes the idle time (until disconnect) from 20 minutes (hex 14) to one minute.

3.5.2 Auto Dial for Windows NT

Windows NT users can control autodialing by editing the setting in the  "Dial-Up Networking" (DUN) 
window. Choose "More", "User Preferences", then "Appearance". 

The Dial-Up Networking window can also be displayed by executing RASPHONE.EXE.

3.6  Proxy Servers

Connecting to a proxy server is no different from connecting to any other SMTP or POP3 server. You must 
know the IP address of the proxy server and the user name and password assigned by the proxy server.

4  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 (C example),

   Code = seeSmtpConnect(...);
   if(Code<0) {/* handle error here */}
   while(1)
     {/* call the driver */
      Code = seeDriver(Chan);
      if(Code<0) {/* handle error here */}
      if(Code==0) break;
      /* do something here . . . */
     }

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.

Refer to the sample program READER for an example of this approach.

5  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 named "KEYCODE". 
The keycode for the shareware version is 0.

5.2  Wide Text

All email messages are formatted as 7-bit ASCII with each line ending in a carriage return line feed pair. 
Each line of text should be no more than 78 bytes. 

In order to allow wider email messages, call

seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, QUOTED_PLAIN)

before sending email. Also see section 3.3.1 "Quoted-Printable Encoding".

5.3  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.4  Secure Email

There are two ways to implement secure email using SEE. 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.5  Verifying Users

The seeVerifyUser function can be used to verify an email account, as demonstrated in the VERUSR 
example program.

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

5.6  Downloading Attachments

Specify a download directory when calling seeGetEmailFile so that you don't overwrite an existing file of 
the same name in the current directory. This is an important security precaution.

For example (double backslashes required for C/C++ only):

seeGetEmailFile(Chan,MsgNbr,MsgName,".\\download",".\\download")

After downloading, the list of attachment filenames can be found by calling

seeDebug(Chan,SEE_GET_ATTACH_FILE_NAMES,Buffer,BufferLength)

5.7  Message Status

The POP3 server typically inserts the header line

Status: U

in the header area of newly received messages. Once the email message has been read, the POP3 server 
changes this to

Status: R

5.8  Return Receipt Requested

If you want the recipient to acknowledge receipt of an email, use seeStringParam to add the following 
header line

"Disposition-Notification-To: <YOUR_EMAIL_ADDR>")

For example:

seeStringParam(Chan, SEE_SET_HEADER,
"Disposition-Notification-To: <info@marshallsoft.com>")

5.9  Registration Applications

It is very straight-forward to create an application designed for use by your customers to email registration 
information to you.

Most, if not all, SMTP servers will accept email from any IP address provided that the addressee is on the 
server. This means that you can use your SMTP server for email to your email account.


6  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/POP3 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-To: STUDENT VERSION [http://www.marshallsoft.com]"

(3) There are no lines added to the end of the email as in the shareware version. That is, the lines shown 
above in section 6.1 (3) are not present in the student 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. That is, the lines shown 
above in section 6.1 (3) are not present in the professional version.

The professional version may be distributed with your application as specified by the software license. See 
section 1.5 "Ordering" for details on ordering.

7  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 (3.1, 95/98, NT) API.  SEE16.DLL is required for all Win16 (Windows 3.1) 
applications, and SEE32.DLL is required for all Win32 (Windows 95/98/NT) applications.

Declaration files have been defined by the following languages:

C/C++                   SEE.H
Visual Basic            SEE16.BAS and SEE32.BAS
VBA (Excel, Access,)   SEE32.BAS
PowerBASIC              SEE32.BAS [not the same as above]
Borland Delphi          SEE16.PAS and SEE32.PAS
Fujitsu COBOL           SEE32.CBI
ABSOFT FORTRAN          SEE32.INC
Visual FoxPro           SEE32.FOX
Visual dBase            SEE16.CC and SEE32.CC
Alaska Xbase++          SEE32.CC [not the same as above]

Additional declaration files will be added. Give us a call if you need a declaration not listed above.

If you have interfaced SEE to an unusual language, email us the declaration file!

8  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.

If you have trouble connecting to a SMTP or POP3 server, try using the IP address instead of the server 
name. If using the IP address works but the server name does not, the problem lies with the Domain Name 
System (DNS) lookup. If this does not solve your connection problem, try connecting using TELNET, 
located in the Windows directory. Use port 25 for SMTP and 110 for POP3.

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 (C Example):

Code = seeSmtpConnect(0,"mail.isp.net","<mike@marshallsoft.com>",NULL);
if(Code<0)
  {static char Buffer[64];
   seeErrorText(0,Code,Buffer,64);
   printf("Error %d: %s\n", Code, Buffer);
  }

Another good idea is turn on logging by calling

seeStringParam(Chan, SEE_LOG_FILE, logfilename)

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

If you still get the shareware screen after registering, the problem is that Windows is finding the shareware 
DLL before the registered DLL. The solution is to delete (or zip up) all shareware versions of the 
SEE16.DLL and SEE32.DLL.

If you get "error -74" when calling seeAttach, the problem is that the keycode passed to seeAttach does not 
match the keycode in the DLL's. This is caused by (1) using the shareware keycode (value = 0) with the 
registered DLL, or (2) using the registered keycode with the shareware DLL.

9  Legal Issues

9.1  Registration

See section 1.5 "Ordering" for information on ordering.

9.2  License

MarshallSoft Computing, Inc. grants the registered user of SEE the right to use one copy of the SEE 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" ($63) registered DLL's may not be distributed under any circumstances, nor may they be 
used for any commercial purpose.

The "professional" ($105) 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").

9.3  Warranty

MARSHALLSOFT COMPUTING, INC.  DISCLAIMS ALL WARRANTIES RELATING TO 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.

10  Summary

10.1  SEE Function Summary

Refer to the SEE Reference Manual (SEE_REF) for detailed information on the SEE functions.  A one line 
summary of each function follows.

There are 25 functions in the SEE library.

SeeAttach         Attaches SEE.
SeeClose          Closes SMTP/POP3 Email Engine.
seeCommand        Transmit arbitrary SMTP/POP3 command.
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.
SeeExtractLine    Extracts line by line number.
SeeExtractText    Extracts line containing 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.

10.2  SEE Error Return Code List

The complete list of SEE error codes follows. 

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 argument 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_RECIPIENTS       Must have at least one recipient. 
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.

