SMTP/POP3/IMAP Email Engine
Users Manual
(SEE_USR)
Version 7.3
November 21, 2014
This software is provided as-is.
There are no warranties, expressed or implied.
Copyright (C) 2014
All rights reserved
MarshallSoft Computing, Inc.
Post Office Box 4543
Huntsville AL 35815 USA
Email: info@marshallsoft.com
Web: www.marshallsoft.com
MARSHALLSOFT is a registered trademark of MarshallSoft Computing.
1
TABLE OF CONTENTS
1 Introduction
1.1 Email Client Compatibility
1.2 Documentation Set
1.3 Technical Support
1.4 How to Purchase
1.5 Academic Discount
1.6 Updates
1.7 Customer ID
1.8 License File
1.9 Distribution
2 SMTP/POP3/IMAP Library Overview
2.1 Dynamic Link libraries
2.2 Keycode
2.3 GUI and Console Mode
2.4 Getting Started using the Library
2.5 Application Program Logic
3 Computer Settings
3.1 Auto Dial
3.2 MarshallSoft DUN Dialer
4 Email Basics
4.1 SMTP Servers
4.2 POP3 Servers
4.3 IMAP Server
4.4 SMTP/POP3/IMAP Host Name
4.5 Email Address Format
5 Using Stunnel
5.1 Automatic Stunnel Mode
5.2 Manual Stunnel Mode
6 Application Notes
6.1 Sending Email
6.2 Setting User Headers
6.3 Receiving Email
6.4 Proxy Servers
6.5 Firewalls
6.6 CompuServe Mail
6.7 Microsoft Network (MSN)
6.8 Using GMAIL, HOTMAIL/LIVE, & YAHOO
6.9 Secure Email
6.10 SMTP Authentication
6.11 POP3 Authentication
6.12 MIME Extensions
6.13 ISO-8859 Character Sets
6.14 Windows 1250, 1252 & 1255 Character Sets
6.15 16-bit Character Sets
6.16 16-bit Unicode
6.17 Wide Text
6.18 Embedded HTML
6.19 Attaching Graphics Files
6.20 Downloading Attachments
6.21 Message Status
6.22 Return Receipt
6.23 Verifying Users
6.24 Connection Status
6.25 Determining An SMTP Server
6.26 Undecoded Email
6.27 Forwarding Email
6.28 Reading Email from a File
6.29 Sending SMS Messages
6.30 Character Quoting
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
4
4
5
5
6
6
7
7
7
7
8
8
8
8
8
9
10
10
10
11
11
12
12
13
13
14
14
14
16
16
16
16
17
17
17
17
17
18
18
18
19
20
20
20
21
21
21
21
22
22
22
23
23
23
24
24
24
25
25
2
TABLE OF CONTENTS - continued.
7 Theory of Operation
7.1 Indirect Method
7.2 Direct Method
8 Using SEE with Other Languages
8.1 Using SEE with Supported Languages
8.2 Using SEE with Unsupported Languages
9 Versions of SEE
9.1 Evaluation Version
9.2 Academic Version
9.3 Professional Version
10 Resolving Problems
11 Legal Issues
11.1 License
11.2 Warranty
12 SEE Function Summary
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
Page
26
26
26
27
27
27
28
28
28
28
29
30
30
30
31
3
1 Introduction
The SMTP/POP3/IMAP Email Engine Library (SEE) is a toolkit that allows software developers to
quickly develop SMTP, POP3/IMAP mail applications and can be used with any program capable of
calling the Windows API.
The SMTP/POP3/IMAP Email Engine (SEE) is a component DLL library providing easy control of the
SMTP (Simple Mail Transport Protocol), POP3 (Post Office 3), and IMAP 4 (Internet Message Access
Protocol) protocols.
A simple interface provides the capability to quickly develop SMTP/POP3/IMAP email software applications
to send and receive mail, including multiple MIME base64 and quoted-printable encoded attachments from
within a Windows application. Knowledge of Winsock and TCP/IP is not needed.
The SMTP/POP3/IMAP Email Engine DLL (SEE32.DLL or SEE64.DLL) works with all versions of
Windows (Windows 95, Windows 98, Windows ME, Windows 2000, Windows NT, Windows 2003,
Windows 2012, Windows XP, Windows Vista and, Windows 7 and Windows 8) and can be used to write
32-bit or 64-bit applications.
The User’s Manual applies to the SMTP/POP3/IMAP Email Engine (SEE) component library for all
supported programming languages. It discusses SMTP POP3 IMAP email processing as well as language
independent programming issues and provides purchasing and licensing information.
We have versions of the SMTP/POP3/IMAP Email Engine SDK (SEE) for C/C++ (SEE4C), Delphi
(SEE4D), Visual Basic (SEE4VB), PowerBASIC (SEE4PB), Visual FoxPro (SEE4FP), Visual dBase
(SEE4DB), Alaska Xbase++ (SEE4XB), and COBOL (SEE4CB).
Purchase a developer license for one programming language and use it with all others. All versions of the
SEE component use the same DLLs (SEE32.DLL or SEE64.DLL). However, the examples provided for
each version are written and tested for the specified programming development language. Development
time is shortened because programmers need only to learn one interface.
We also have declaration files and example programs for a few other languages (such as FORTRAN and
MATLAB).
Fully functional evaluation versions of our SMTP /POP3 IMAP Email software components are provided
so that the developer can test the SEE library in their environment. The evaluation version as well as a list
of the many SMTP POP3 IMAP email features provided can be found on our website at:
http://www.marshallsoft.com/email-component-library.htm
1.1 Email Client Compatibility
The SMTP/POP3/IMAP Email Engine component library has been tested against multiple email clients,
including Eudora, Microsoft Outlook, Outlook Express, Thunderbird, 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.
4
1.2 Documentation Set
The complete set of documentation is divided into three manuals in Adobe PDF format. This is the second
manual (SEE_USR.PDF) in the set.
•
•
•
SEE_4x Programmer’s Manual (SEE_4x.PDF)
SEE User’s Manual (SEE_USR.PDF)
SEE Function Reference Manual (SEE_REF.PDF)
The “x” in SEE_4x Programmer’s Manual specifies the host programming language such as C for C/C++, D
for Delphi, VB for Visual Basic, PB for Power BASIC, FP for FoxPro, DB for dBase, and XB for Xbase.
The SMTP/POP3/IMAP Programmer’s Manual (SEE_4x.PDF ) is the programming language specific
manual. All language dependent programming issues such as compiling, compilers and example programs
are discussed here.
The SMTP/POP3/IMAP User’s Manual (SEE_USR.PDF) discusses language independent SMTP/POP3
email processing issues. License and purchase information is also provided.
The SMTP/POP3/IMAP Reference Manual (SEE_REF.PDF) contains specific details on each
individual SEE email function. It also includes an error return code list.
1.3 Technical Support
We want you to be successful in developing software applications using our SMTP/POP3/IMAP Email
Library! We are committed to providing the best, most robust software development toolkit that we can.
If you have any suggestions for enhancements or comments, please let us know.
If you are having a problem using SEE, refer to section 10.0 “Resolving Problems”.
Registered users with a current license (purchase or last update) within the last 12 months, can email us at
support @marshallsoft.com or call us at 256-881-4630 8:00 am to 5:00 pm CST Monday through Friday.
Evaluation users may email us at support [at] marshallsoft.com. There is no phone support for evaluation
users.
To avoid having your email deleted by our SPAM scanners, begin the subject with “MSC HELP” or with
the product name (SEE4C, SEE4VB, etc.). Zip up any attachments and send plain ASCII text email only.
Contact us by email at support [at] marshallsoft.com.
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/windows
Registered users with a current license (12 months or less) can update to the latest DLL’s at
http://www.marshallsoft.com/oem.htm
5
1.4 How to Purchase
A developer license for the professional version of the SMTP/POP3/IMAP Email Library SDK (SEE)
may be purchased for $115 (US dollars) for electronic delivery. This price is good for one year from the
release date. The professional version DLL is also branded internally with your company name or
Customer ID.
The fastest and easiest way to order is on our web site at
https://www.marshallsoft.com/vmorder.htm
You can also order by completing INVOICE.TXT (Pro Forma invoice) and emailing (info [at]
marshallsoft.com), mailing (see our address at top), or faxing it to us. Our fax number will be provided
upon request.
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, Pay Pal and Western Union payments.
The registered package includes:
(1) Win32 and Win64 DLL Libraries without the evaluation version popup window.
(2) Email support for one year.
(3) Free downloadable updates to the registered DLLs for one year.
Note that the SEE DLLs never expire.
1.5 Academic Discount
We offer an "academic price" with a 40% discount for prepaid email orders to faculty and full time
students currently enrolled in any accredited high school, college, or university. The software must be
used for educational purposes.
To qualify for the discount, your school must have a web site and you must have a current email address
(not forwarded) at your school. On the online order form on our web site order page, put "academic
discount", or enter "student at" (or "faculty at") and your schools web site address (URL) in the comments.
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 cannot be used for any commercial purpose.
6
1.6 Updates
When a developer license is purchased for the SMTP/POP3/IMAP Email Library SDK, the developer
will be sent a new registered DLL plus a license file (SEExxxx.LIC) that can be used to update the
registered DLL for a period of one year from purchase. Updates can be downloaded from
http://www.marshallsoft.com/update.htm
After one year, the developer license must be updated to be able to download updates. The developer
license can be updated for $30 if ordered within one year from the original purchase (or previous update).
After one year, licenses can be updated for $55 ($75 after 3 years).
Note that the registered SEE DLL never expires.
Also see file UPDATES.TXT.
1.7 Customer ID
The Customer ID is a 4-6-digit number following the product name (SEE) in the license file. For example,
customer 12345 will receive license file SEE12345.LIC. Provide the Customer ID in the SUBJECT of an
email when contacting us for technical support (SEE4C 12345).
1.8 License File
A license file SEExxxx.LIC, where “xxxxx” is the 4-6-digit customer ID, is provided with each developer
license. The license file is an encrypted binary file used for updating SEE as explained in section 1.6
“Updates”. The license file is required in order to create (or update) the registered DLL’s. The license
file can be found in the /DLLS directory created after SETUP is run.
1.9 Distribution
To run an application (that calls SEE functions) on another computer, the file SEE32.DLL (or
SEE64.DLL) must be copied to the Windows directory of the other computer. The Windows directory is
normally \WINDOWS for Windows 95/98/2003/2012/XP/Vista/Win7/Win8 and \WINNT for Windows
NT/2000. Do not attempt to “register” the DLLs.
7
2 SMTP/POP3/IMAP Library Overview
2.1 Dynamic Link Libraries
The SMTP/POP3/IMAP Email Library SDK consists of a Win32 [SEE32.DLL] and a Win64
[SEE64.DLL] 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 a static library that is bound at link time to
each and every application that uses it.
2.2 Keycode
When a developer license is purchased, the developer will receive a new SEE32.DLL and SEE64.DLL
and a keycode for the DLLs. Pass this keycode as the argument to seeAttach. The keycode will be found
in the file named “KEYCODE”. The keycode for the evaluation version is 0. The keycode for the
registered version will be a unique 9 or 10 digit number. Note: Your keycode is NOT your Customer
ID/Registration number.
2.3 GUI and Console Mode
SMTP/POP3/IMAP Email Library (SEE) functions can be called from WIN32 console mode programs
as well as GUI programs. A "console mode" program is a Windows
95/98/ME/2003/NT/2000/XP/Vista/Win7/Win8 WIN32/Win64 command line program running in a
command window. Although console mode programs look like DOS programs, they are WIN32/Win64
programs that have access to the entire Windows address space.
2.4 Getting Started Using the Library
The first SMTP/POP3/IMAP (SEE) function that should be called is seeAttach, which initializes the
SEE library and allocates necessary resources. seeAttach is typically called in the initialization section of
the application and should be called just once.
After seeAttach is called, you are ready to connect to an SMTP server with seeSmtpConnect or a
POP3/IMAP 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 the 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 SEE_4x Programmer’s Manual. The “x” in SEE_4x specifies the host language such
as C for C/C++, VB for Visual Basic, etc. the example source is written in.
•
•
•
•
•
•
•
•
SEE_4C
SEE_4D
SEE_4VB
SEE_4PB
SEE_4FP
SEE_4DB
SEE_4XB
SEE_4CB
SMTP/POP3
SMTP/POP3
SMTP/POP3
SMTP/POP3
SMTP/POP3
SMTP/POP3
SMTP/POP3
SMTP/POP3
(SEE)
(SEE)
(SEE)
(SEE)
(SEE)
(SEE)
(SEE)
(SEE)
Programmer's
Programmer's
Programmer's
Programmer's
Programmer's
Programmer's
Programmer's
Programmer's
Manual
Manual
Manual
Manual
Manual
Manual
Manual
Manual
for
for
for
for
for
for
for
for
C/C++
Delphi
Visual Basic
PowerBASIC
Visual FoxPro
Visual dBase
Xbase++
COBOL
8
2.5 Application Program Logic
Application programs developed using the SMTP/POP3/IMAP Email library should follow this logic:
SENDING MAIL:
seeAttach
seeSmtpConnect
LOOP
Any SMTP command such as seeSendEmail
END-LOOP
seeClose
seeRelease
CHECKING MAIL:
seeAttach
seePop3Connect (or seeImapConnect)
LOOP
Any POP3 (or IMAP) command such as seeGetEmailFile
END-LOOP
seeClose
seeRelease
CHECK MAIL THEN SEND MAIL
seeAttach
seePop3Connect (or seeImapConnect)
LOOP
Any POP3 (or IMAP) command such as seeGetEmailFile
END-LOOP
seeClose
seeSmtpConnect
LOOP
Any SMTP command such as seeSendEmail
END-LOOP
seeClose
seeRelease
9
3 Computer Settings
Changes to a Windows computer are not necessary in order to run programs calling SMTP/POP3/IMAP
Email functions. However, there are changes that some users find useful.
3.1 Auto Dial
3.1.1 Auto Dial for Windows 95/98/Me
To allow Dial-Up Networking (DUN) to dial up an ISP when only the Winsock (WIN32 only) is accessed:
(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.1.2 Auto Dial for Windows NT
Windows NT users can control auto dialing 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.1.3 Auto Dial for Windows 2000/2003/XP/Vista/Win7
Start Windows help, then type "autodial", then click "configuring". Follow all directions, including
"notes". Note that the "Remote Access Auto Connection Manager" must be enabled.
3.2 MarshallSoft DUN Dialer
Instead of using the “auto dial” feature of Windows, the MarshallSoft DUN Dialer (MDD) component
library can be used to dial up (and hang up) under program control. MDD works under all Windows 32bit operating systems (Win 95, 98, Me, NT, 2000, 2003, XP/VISTA/Win7/Win8).
Refer to the MDD product page at http://www.marshallsoft.com/mdd4c.htm
(for Visual C++) and http://www.marshallsoft.com/mdd4vb.htm (for Visual Basic), etc.
10
4 Email Basics
An email account is normally hosted on a computer that has a permanent connection to the Internet.
Outgoing email is sent over the Internet using the SMTP (Simple Mail Transport Protocol) and is stored in
mass storage until retrieved using the POP3 (Post Office Protocol 3) or IMAP (Internet Message Access
Protocol) protocol. POP3 is a subset of IMAP, so that the POP3 protocol can be used to download email
from an IMAP server.
The SMTP/POP3/IMAP Email Engine (SEE) component library is an “email client” and is used to send
and receive email using the SMTP and POP3 protocols.
4.1 SMTP Servers
A connection to a SMTP server must be made to be able to send email. There are several common
configurations for SMTP servers. Connect to SMTP servers with seeSmtpConnect or (for servers
requiring SSL/TLS) seeSmtpConnectSSL.
4.1.1 Standard SMTP on Port 25
Standard SMTP servers do not use usernames or passwords. If connecting to the Internet through an ISP
(Internet Service Provider), then that ISP will normally provide a SMTP server. However, if you connect
to that same ISP and you are not connected to the Internet through them (say you are traveling with your
laptop), then you will not normally be able to send email since this is considered "relaying".
There are several workarounds for the "relaying" problem, such as "read before send", depending on your
particular ISP.
4.1.2 Standard SMTP on Port 587
Most ISPs are moving from using port 25 to using port 587. Only known servers are allowed to use port
25, which prevents connecting directly to the SMTP server associated with the email account of a
recipient.
4.1.3 Authenticated SMTP on Port 25
SMTP Authentication employs a username and password to identify the user to the server. These two
entities are often the same as the username and password of the corresponding POP3 (or IMAP4) account.
It is not necessary to be connected directly to your ISP in order to do SMTP Authentication. The "no relay"
problem does not exist since the authentication identifies the client to the server.
4.1.4 Authenticated SMTP Port 587
This works the same as using SMTP Authentication on port 25, except that port 587 is used instead.
This is the becoming the most common used configuration.
4.1.5 TLS/SSL Authentication on Port 465 or 587
TLS and SSL are web based security protocols used by a few ISPs and most web based email services
(such as Gmail, Hotmail, Yahoo mail, etc.). See section 5 "Using Stunnel". Port 465 or 587 are used.
Connect with seeSmtpConnectSSL.
11
4.2 POP3 Servers
A connection to a POP3 server must be made in order to read email. However, POP3 is by far the most
common protocol for reading email from an email account.
4.2.1 Standard POP3 Server on Port 110
The well known port for POP3 servers is port 110. Both an account username and password are required.
4.2.2 TLS/SSL Authentication on Port 995
TLS and SSL are web based security protocols used by a few ISPs and most web based email services
(such as Gmail, Hotmail, Yahoo mail, etc.). See Section 5 "Using Stunnel". Port 995 is used. Connect with
seePop3ConnectSSL.
4.3 IMAP Server
In order to connect to an IMAP server, the host name (or IP address), user name, and password for the
IMAP account must be known.
4.3.1 Standard IMAP Server on Port 143
An IMAP server hosts your email account. It uses “well known port 143” although other ports can be used.
The function seeIntegerParam provides the capability to set the IMAP port.
4.3.2 TLS/SSL Authentication on Port 995
TLS and SSL are web based security protocols used by a few ISPs and most web based email services
(such as Gmail, Hotmail, Yahoo mail, etc.). See Section 5 "Using Stunnel". Port 993 is used. Connect with
seeImapConnectSSL.
The seeImapSource function can be use to read an (undecoded) email message directly from a file. Refer
to Section 6.28, “Reading Email from a File”.
12
4.4 SMTP/POP3/IMAP Host Names
In order to send or receive email, you must know the name (or IP address) of the server. All email client
programs (Eudora, Outlook, etc.) must have this name in order to send email. Note that any SMTP server
that will accept your email can be used to send email.
Typically, the email server name will be "mail.XXX.YYY" where XXX.YYY is the name of the computer
that hosts your email account. If you aren't sure of the email host name, look in the setup of your email
client program (see Section 6.25 “Determining your SMTP Server) or ask your system administrator.
4.5 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 the account name, and “zzz” is where
the email account is hosted.
(3) The brackets are required.
For example, the email address for Technical Support can be specified by any of the following:
(1) <support@marshallsoft.com>
(2) Support< support@marshallsoft.com>
(3) Technical Support <support@marshallsoft.com>
Multiple email addresses can be strung together separated by semicolons, as in:
"<mike@myisp.com>;<pam@myisp.com>;<lauren@myisp.com>"
See the example programs for more samples of email address usage.
NOTE: All text delimiters in SEE were changed to the semicolon in SEE version 3.6.1.
13
5 Using Stunnel
Stunnel is a free SSL proxy server that provides SSL services to Windows programs. Stunnel is easy to install,
very robust, and functions transparently with very little overhead.
Stunnel is required by SEE application programs when connecting to an email server that requires SSL
services such as Gmail, Hotmail, Yahoo, and Microsoft Online. See http://www.marshallsoft.com/stunnel.htm
There are two ways to use Stunnel: automatic and manual modes. The first step is to download and install
Stunnel.
Step 1: Download Stunnel
Stunnel may be downloaded from http://www.stunnel.org/download/binaries.html or from our FTP site at
ftp://ftp.marshallsoft.com/pub/stunnel/stunnel.zip
Step 2: Install Stunnel
For manual mode, the recommended installation directory is "c:\stunnel". For automatic mode, the
recommended installation directory is \SEE4C\SSL (C/C++), \SEE4D\SSL (Delphi), \SEE4VB\SSL (Visual
basic), etc.
If Stunnel was downloaded from www.stunnel.org, the downloaded Stunnel installation program must be run.
If Stunnel was downloaded from ftp.marshallsoft.com, unzip into the installation directory such as c:\stunnel
or the SEE installation directory such as \SEE4C\SSL, SEE4D\SSL, etc. There is no installation program to
run.
5.1 Automatic Stunnel Mode
Once Stunnel has been installed, you are now ready to run SEE programs that connect to email servers that
require SSL. SEE will configure, load, and unload Stunnel automatically. See the MailSSL and ReadSSL
example programs.
5.2 Manual Stunnel Mode
In manual mode, the recommended way to use Stunnel is to add it to your Windows program Startup list on
each computer that requires SSL services.
Step 1: Stunnel Configuration File
There are four Stunnel configuration files provided: config(gmail).txt, config(hotmail).txt,
config(yahoo).txt, and config(microsoftonline).txt. Copy these configuration files from the SEE \APPS
directory to your Stunnel directory c:\stunnel.
Examine the Stunnel configuration files. Note that they do not contain any user names or passwords. Also
note the "accept =" port numbers that are used to communicate with SEE. For example, in
config(gmail).txt, the SMTP port is 8001 and the POP3 port is 9001. These same port numbers must be
passed to seeSmtpConnectSSL and seePop3ConnectSSL. See the MailSSL and ReadSSL example
programs.
Note the "taskbar = yes" entry. If you do not want the Stunnel icon to be displayed on the Windows
taskbar, change this entry to "taskbar = no".
If you are using another email server that requires SSL services, create a new Stunnel configuration file.
You will need to know the server name and port used by the particular email service. Choose unique
communication ports, such as 8004 for SMTP and 9004 for POP3.
14
Step 2: Starting Stunnel
There are several ways that Stunnel can be started, although the recommended way is to put it in the
StartUp list so that it is started automatically each time your computer is booted. Stunnel does not take
much memory and uses CPU only when being used.
Stunnel can always be started manually by using the Windows "Run" icon or typing (for Gmail)
c:\stunnel\stunnel config(gmail).txt
Step 3: Adding Stunnel to Startup List
First, create a shortcut to Stunnel by right-clicking on your desktop and clicking "New" then "Shortcut".
For example, for Gmail, enter
c:\stunnel\stunnel config(gmail).txt
in the box displayed. Name it "StunnelGmail".
For Windows XP;
1. Double-click "My Computer".
2. Double-click the Local Drive (C:) icon.
(if you see "these files and folders are hidden", click "view these now")
3. Scroll down to the "Documents and Settings" folder.
4. Double-click it.
5. Double-click "All Users"
6. Double-click “Start Menu”
7. Double-lick "Programs"
8. Double-lick "Startup"
9. Drag the Stunnel shortcut into "Startup" window.
For Windows Vista, Windows 7 and Windows 8
1. Right-click "Start" button
2. Left-click "Explore All Users"
3. Double-click "Programs"
4. Scroll down until you see the folder labeled "Startup"
5. Double-click it to open its contents window
6. Drag the Stunnel shortcut into "Startup" window.
Stunnel will now be started each time your computer is booted. If more than one SSL enabled server will
be used (say both Gmail and Hotmail), multiple copies of Stunnel may be started, each with its unique
configuration file.
15
6 Application Notes
6.1 Sending Email
(1) The email client (calling seeSmtpConnect) connects to an SMTP server. The SMTP server can be
anywhere on a TCP/IP network (or Internet), and does not require a password. However, most SMTP
servers require that you be locally connected before they will accept the email for delivery.
Some "Extended SMTP" servers support "SMTP Authentication" (Section 6.10), which requires a user
name and password (usually the same as your POP3 user name and password) before email can be sent.
These servers also often require port 587 rather than 25.
(2) The list of email recipients is specified (seeSendEmail and seeSendHTML). The SMTP server
typically verifies the domain portion of each email address (but not the full email address unless it is local),
then accepts the email for delivery. After all recipients have been accepted, the email message and
attachments are uploaded to the SMTP server. If no errors occur during the upload process, then the
connection to the SMTP server is closed.
(3) If the email address is not on the local SMTP/POP3/IMAP server, the SMTP server connects to the
recipient’s SMTP server and uploads the email. The recipient’s SMTP/POP3/IMAP server will verify the
recipient’s address and if there is a problem (such as "no such user"), the server may (at its option) send an
email back to the original sender.
Refer to the seeSendEmail (and seeSendHTML ) functions in the SEE Reference Manual (SEE_REF) for
more details on sending email. Also refer to the MAILER example program.
6.2 Setting User Headers
One or more headers can be added by calling seeStringParam with parameter name
SEE_ADD_HEADER. For example, the following adds two headers to all outgoing email:
seeStringParam(0,SEE_ADD_HEADER, "X-Priority: Normal")
seeStringParam(0,SEE_ADD_HEADER, "X-Sender: MarshallSoft Computing")
In order to remove all user added headers, pass a string (use SEE_SET_HEADER rather than
SEE_ADD_HEADER) with the first character as a binary zero (null string).
6.3 Receiving Email
In order to receive email, you must first connect to the POP3/IMAP server. Once connected, the email
messages in an account are numbered (starting with 1) and the account is locked. This number identifies
email in the account. The account is not renumbered when email is deleted, but it is renumbered after the
connection is closed.
Only one connection to your POP3/IMAP account is allowed at any one time. Once connected, any new
arriving email is not posted until you have closed the connection.
Refer to the functions seeGetEmailFile and seeGetEmailLines in the SEE Reference Manual
(SEE_REF) for more details on receiving email. Also refer to the STATUS and READER example
programs.
16
6.4 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. However, you may need to connect using a proxy specified port, rather than the standard well
known SMTP and POP3 ports. Calling seeIntegerParam with parameter SEE_SMTP_PORT or
SEE_POP3_PORT before connecting can specify these alternate ports.
There is no standard method for providing connection parameters to proxy servers. Refer to the
documentation for your specific proxy server.
Also see Section 5, “Using Stunnel”.
6.5 Firewalls
Firewalls operate transparently with respect to TCP/IP programs, monitoring inbound and outbound traffic.
Firewalls can filter packets based on their contents, source addresses, destination addresses, and port
numbers. If the traffic meets criterion of the firewall, it is allowed, otherwise it is not.
6.6 CompuServe Mail
In order to check CompuServe mail, POP3 mail must first be set up. Log onto CompuServe, and execute
"GO POPMAIL".
6.7 Microsoft Network (MSN)
MSN uses the authentication protocol "Secure Password Authentication", which is Microsoft proprietary. The
protocol specification is not publicly available, which means that only a Microsoft email client can be used.
However, you can set an MSN account to operate with standard SMTP/POP3/IMAP servers, which will
allow the use of SEE (as well as other standard email clients) with MSN.
6.8 Using GMAIL, HOTMAIL/LIVE and YAHOO Email Servers
If you have an account at GMAIL, Hotmail/LIVE, Yahoo, or any other server that requires the use of the
SSL protocol, it is possible to send and receive email using an SSL enabled proxy server such as the (free)
Stunnel proxy server. Refer to Section 5.0 "Using Stunnel".
Note: Google is pushing a new security standard (OAuth 2.0), which prevents almost all non-google email
clients from connecting to Gmail servers. You can continue to use the industry standard TLS/SSL by
editing your Gmail security settings at https://www.google.com/settings/security/lesssecureapps.
17
6.9 Secure Email
There are several ways to implement secure email using SEE. The first way is to use a package such as
"Pretty Good Privacy" (search http://www.download.com for "PGP") to encrypt the message, optionally
compress the resulting file using PKZIP or similar product, and then send the encrypted message as an
attachment.
Another way to send encrypted messages with PGP is to first encrypt the message using PGP (which yields
7-bit ASCII text) then paste it directly into the message portion of the outgoing email. Once downloaded
by the recipient, the encrypted portion of the message is decrypted using PGP.
A “Virtual Private Network” (VPN) can also be created which automatically encrypts all data (not just
email) sent over the VPN. VPN products may be either software or hardware, and are widely available. If
running Windows XP, enter “VPN” in the search box of Windows HELP and SUPPORT.
6.10 SMTP Authentication
SMTP authentication requires connection to an ESMTP (Extended SMTP) server. Three forms of SMTP
authentication are supported: “AUTH PLAIN”, "AUTH LOGIN" and "AUTH CRAM-MD5".
"AUTH PLAIN" is fairly simple protocol supported by many SMTP servers that support authentication.
"AUTH LOGIN" is a Microsoft authentication mechanism used in Exchange Server. It is not an Internet
standard nor is it covered by an RFC.
"AUTH CRAM-MD5" is based on public key encryption and is the preferred authentication protocol. It is
covered by RFC2554 and RFC 2195.
To perform SMTP authentication, make the following calls before connecting:
seeIntegerParam(0, SEE_ENABLE_ESMTP, 1)
seeStringParam(0, SEE_SET_USER,
your-user-name)
seeStringParam(0, SEE_SET_SECRET, your-password)
The 'secret' is normally the same as the user's password.
A particular protocol can be specified calling
seeIntegerParam(0, SEE_AUTHENTICATE_PROTOCOL, X)
where “X” is set to AUTHENTICATE_PLAIN, AUTHENTICATE_LOGIN, or
AUTHENTICATE_CRAM.
6.11 POP3 Authentication
POP3 authentication is performed by the use of either (1) the USER and PASS commands, or the (2)
APOP command. Since the APOP command is an optional command, some POP3 servers have not
implemented it.
To perform APOP authentication rather than USER/PASS, make the following call before connecting:
seeIntegerParam(0, SEE_ENABLE_APOP, 1)
18
6.12 MIME Extensions
Internet mail can only transport 7-bit ASCII characters. Multipurpose Internet Mail Extensions (MIME) is
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/IMAP
Email Engine library supports both.
6.12.1 Quoted-Printable Encoding
Quoted-Printable encoding is used for three primary purposes:
(1) To embed binary values into an email message, typically for use with foreign alphabets (characters).
(2) To send email messages wider than 78 characters.
(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 an 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 allow ISO-8859-1 characters in an email message, call
seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, QUOTED_8859)
To disable Quoted-Printable encoding (the default), call
seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, QUOTED_OFF)
6.12.2 Binary Attachments
Binary attachments are encoded using MIME base-64. Most email clients (such as made by Eudora,
Netscape, and Microsoft) can decode MIME base-64 attachments.
To attach a file to an email, specify the filename as the last argument of the seeSendEmailFile function.
Refer to the SMTP/POP3/IMAP Email Reference Manual (SEE_REF) for more details. Multiple
attachments are listed with semicolons separating them, such as "file1.zip;file2.zip;file3.zip".
Only named attachments are decoded. To specify that unnamed attachments also be decoded, call
seeIntegerParam(0, SEE_DECODE_UNNAMED, 1)
before calling seeGetEmailFile.
19
6.13 ISO-8859 Character Sets
ISO 8859 is a set of 10 standardized 8-bit graphic character sets:
ISO-8859-1
ISO-8859-2
ISO-8859-3
ISO-8859-4
ISO-8859-5
Latin1 (West European)
Latin2 (East European)
Latin3 (South European)
Latin4 (North European)
Cyrillic
ISO-8859-6
ISO-8859-7
ISO-8859-8
ISO-8859-9
ISO-8859-10
Arabic
Greek
Hebrew
Turkish
Nordic
In order to specify ISO-8859-1for outgoing email, call (before sending email)
seeIntegerParam(0, SEE_QUOTED_PRINTABLE, QUOTED_ISO_8859_1);
For example;
// C/C++ Example:
seeIntegerParam(0,SEE_QUOTED_PRINTABLE, QUOTED_ISO_8859_1);
SEE directly supports ISO_8859_1, ISO_8859_2, ISO_8859_3, ISO_8859_4, ISO_8859_7, and ISO_8859_8.
Also refer to http://www.marshallsoft.com/iso-8859.htm
6.14 Windows 1252 and 1255 Character Sets
The Windows 1250, 1252, and 1255 character sets can be specified as follows:
seeIntegerParam(0, SEE_QUOTED_PRINTABLE, QUOTED_WIN_1250); // set Windows-1250
seeIntegerParam(0, SEE_QUOTED_PRINTABLE, QUOTED_WIN_1252); // set Windows-1252
seeIntegerParam(0, SEE_QUOTED_PRINTABLE, QUOTED_WIN_1255); // set Windows-1255
6.15 16-bit Character Sets
Any language that is represented by 16-bit character codes (such as Chinese, Japanese, and Korean) can be
inserted into email. For example, if the body of the email contains GB2312 characters (16-bit binary
Chinese character codes), the character set can be specified in the email as (C/C++ example)
Code = seeIntegerParam(0, SEE_QUOTED_PRINTABLE, QUOTED_USER);
Code = seeStringParam(0, SEE_SET_CONTENT_TYPE,
(LPSTR)"Content-Type: text/plain; charset=gb2312");
The above approach works for any defined character set such as
gb2312
big5
euckr
koi8-r
ms_kanji
Simplified Chinese
Chinese
Korean
Cyrillic
Japanese
20
6.16 16-bit Unicode
UTF-8 is an ASCII encoding of 16-bit Unicode. Any 16-bit Unicode text can be encoded to UTF-8 text by
calling the seeEncodeUTF8 function. Conversely, UTF-8 encoded text can be decoded into 16-bit
Unicode by calling the seeDecodeUTF8 function.
Note however, that the recipient’s email client must be capable of decoding UTF-8 and displaying 16-bit
Unicode characters. For information on Unicode, refer to:
http://www.unicode.org
Also see the CODETEST example program.
6.17 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 1000 bytes.
In order to allow wider email messages, call
seeIntegerParam(Chan, SEE_QUOTED_PRINTABLE, QUOTED_PLAIN)
before sending email. Also refer to Section 6.12.1 “Quoted-Printable Encoding”.
6.18 Embedded HTML
Graphic images may be embedded within HTML encoded email by passing the image filename(s) in the
seeSendHTML function. Within the HTML encoded email itself, the first image must be referenced as:
<IMG SRC="cid:message-root.1">
Additional images may be reference as “message-root.2”, “message-root.3”, etc. Note that the
"cid:message-root" above must be in lower case.
See the HTML (or SendHTML.C for SEE4C) example program.
6.19 Attaching Graphic Files
Attaching files ending with ".BMP", ".GIF", ".TIF", and ".JPG" are attached as image types, and therefore
can be displayed by email clients (such as Eudora and Outlook, etc.) that are capable of displaying
graphics files. To disable this feature, call
seeIntegerParam(Chan, SEE_ENABLE_IMAGE, 0)
To enable this feature, call
seeIntegerParam(Chan, SEE_ENABLE_IMAGE, 1)
21
6.20 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_NAMES,Buffer,BufferLength)
6.21 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
6.22 Return Receipt Requested
The SMTP protocol itself has no provisions for return receipt acknowledgements. However, most SMTP
servers recognize several headers. Older SMTP servers may recognize the header
Return-Receipt-To:
while newer SMTP servers will recognize the header:
Disposition-Notification-To:
For example:
seeStringParam(Chan, SEE_ADD_HEADER,
"Disposition-Notification-To: <info@marshallsoft.com>")
You can also send both headers.
22
6.23 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.
6.24 Connection Status
If seeStatistics(Chan, SEE_GET_CONNECT_STATUS) is called and it fails because there is no live
TCP/IP network, seeRelease must be called (followed by calling seeAttach again) to re-initialize the
winsock layer. The problem appears to be in the Microsoft winsock code.
Rather than use SEE_GET_CONNECT_STATUS, attempt to connect to any (SMTP or POP3) email
server and send the NOOP command (with seeCommand):
Code = seeCommand(Chan, "NOOP")
6.25 Determining Your SMTP Server
All email clients (such as Outlook, Eudora, .etc) require a SMTP server host name (or IP address) before
they can send email. If an email client is installed on a computer, the SMTP that it uses can be found. For
example:
Eudora: Tools/Options/Sending Mail/SMTP Server:
Outlook Express: Tools/Accounts/Mail/Properties/Servers/Outgoing mail (SMTP)
Outlook: Tools/Options/Mail Setup/E-mail Account/View.../[Next]/Change.../Outgoing mail server
(SMTP)
Mozilla Thunderbird: Tools/Account Settings.../Outgoing Server (SMTP)/Server Name:
Netscape Mail: Window/Mail & Newsgroups/Edit/Mail & Newsgroups Account Settings.../Outgoing
Server (SMTP)/Server Name:
23
6.26 Undecoded Email
There are several ways to get an undecoded copy of (incoming) email. seeGetEmailLines can be called or
an undecoded copy can be saved to disk when seeGetEmailFile is called.
In the latter case, if the function
seeStringParam(Chan,
SEE_SET_RAWFILE_PREFIX,
prefix-character)
is called before calling seeGetEmailFile, then an undecoded copy of the email being downloaded will be
saved to disk whose name consists of the email file name (3rd argument in seeGetEmailFile) prefixed by
the above specified prefix character.
For example, if the underscore character "_" is specified as the prefix character, and "Email.txt" is
specified in seeGetEmailFile for the message file, then the undecoded copy of the downloaded email will
be save to "_Email.txt" in the same directory to which the message file is written.
See the entry for seeGetEmailLines, seeGetEmailFile, and seeStringParam (with parameter
SEE_SET_RAWFILE_PREFIX) in the SEE Reference Manual (SEE_REF.*) and also the READER
example program.
6.27 Forwarding Email
In order to forward email, you must have an undecoded copy of the email to be forwarded. To get an
undecoded copy, refer to Section 6.26 "Undecoded Email".
The seeForward function forwards email by using the "message/rfc822" content type.
Call seeForward to forward an email to a new recipient. See the entry for seeForward in the SEE
Reference Manual (SEE_REF.*) and the FORWARD example program.
6.28 Reading Email from a File
The seePop3Source function can be used to specify the filename of an undecoded email message so that it
can be read (and thus decoded) when seeGetEmailFile is called.
Rather than connecting to a POP3 server and reading a specific email message from the server, the
function seePop3Source is called. Subsequently calling seeGetEmailFile will read and decode the email
as if it were being downloaded from a POP3 server.
See the entry for seePop3Source in the SEE Reference Manual (SEE_REF) and the POP3RD example
program.
24
6.29 Sending SMS Messages
Most (if not all) cell phone companies provide an email gateway server that forwards email to a cell phone.
In order to send an SMS message with an email client such as SEE, you must know both the cell phone
number and the cell phone company.
Up to 160 characters can be sent, consisting of the subject plus the body of the email (cut off at 160
characters).
Some of the more popular cell phone companies SMS email addresses are:
ALLTEL
AT&T Wireless
Cingular
Fido
Virgin Mobile
Boost Mobile
Sprint PCS
T-Mobile
Verizon
Cricket
-
10DigitPhoneNumber@message.alltel.com
10DigitPhoneNumber@mobile.att.net
10DigitPhoneNumber@mobile.mycingular.com
10DigitPhoneNumber@fido.ca
10DigitPhoneNumber@vmobl.com
10DigitPhoneNumber@myboostmobile.com
10DigitPhoneNumber@messaging.sprintpcs.com
10DigitPhoneNumber@tmomail.net
10DigitPhoneNumber@vtext.com
10DigitPhoneNumber@mms.mycricket.com
Example: 8885551234@mobile.att.net
Most cell phone company email-to-SMS gateway servers can be found online without too much trouble.
For example, to find the gateway server for Verizon, search google for "verizon sms gateway".
6.30 Character Quoting
The content of all email messages, including attachments, must be 7-bit ASCII text. In addition, certain
characters (such as the equals sign '=') are not allowed in HTML formatted email messages.
"Quoting" is a method used to escape characters in an email message that would otherwise not be legal.
For character codes 00 thru 7F (hex), a non-legal character would be replaced by its hexadecimal character
code equivalent. For example, the equals sign (not legal in HTML email messages) would be replace by
the 3 characters "=3D".
For character codes above 7F, the escape sequence depends on the selected character set. For example, the
word "français" in ISO-8859-1 would be replaced by "fran=E7ais" since E7 is the hexadecimal character
code for 'ç' in ISO-8859-1.
Character sets supported by SEE include:
QUOTED_HTML
QUOTED_ISO_8859_3
QUOTED_ISO_8859_8
QUOTED_RICH
QUOTED_WIN_1250
QUOTED_ISO_8859_1
QUOTED_ISO_8859_4
QUOTED_PLAIN
QUOTED_UTF8
QUOTED_WIN_1252
QUOTED_ISO_8859_2
QUOTED_ISO_8859_7
QUOTED_WIN_1255
Quoting is enabled by calling seeIntegerParam(Chan, SEE_PRINTABLE_QUOTED, N) where
N is one of the above character sets (QUOTED_HTML, etc).
25
7 Theory Of Operation
The SMTP/POP3/IMAP Email Engine component library 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.
7.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 library 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.
7.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 (pseudocode example),
... enable direct mode (disable indirect mode).
seeIntegerParam(Chan, SEE_AUTO_CALL_DRIVER, 0)
... connect to server.
Code = seeSmtpConnect(...)
If Code < 0 Then
... handle error here.
End If
... run the driver.
Loop
... call the driver
Code = seeDriver(Chan)
If Code < 0 Then
... handle error here.
Exit Loop
End If
If Code = 0 Then
... seeDriver has finished.
Exit Loop
End If
... display progress or do other processing here.
End Loop
... enable indirect mode (disable direct mode).
seeIntegerParam(Chan, SEE_AUTO_CALL_DRIVER, 1)
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 (or STATUS) for an example of this approach.
26
8 Using SEE with Other Languages
We have versions of the SEE toolkit for C/C++ (.NET and C# .NET) (SEE4C), Delphi (SEE4D), Visual
Basic (VB .NET. VBA) (SEE4VB), PowerBASIC (SEE4PB), Visual FoxPro (SEE4FP), Visual dBase
(SEE4DB), Alaska Xbase++ (SEE4XB), COBOL (SEE4CB), and Fortran (SEE4F). All versions of the
SEE library use the same DLLs (SEE32.DLL or SEE64.DLL). Evaluation versions for these may be
downloaded from our website at
http://www.marshallsoft.com/email-component-library.htm
The SMTP/POP3/IMAP Email Engine DLL can also be used with any Win32 application written in any
language capable of calling the Windows (95/98/Me/NT/2000/2003/2012/XP/Vista/Win7/Win8) API.
8.1 Using SEE with Supported Languages.
Once you have purchased one programming language version of the SMTP/POP3/IMAP Email Library
SDK (SEE), you can use it with all other supported languages. Supported languages are C/C++, .NET,
Visual Basic, PowerBASIC, Delphi, Visual FoxPro, Visual dBase, Xbase++, and (Fujitsu) COBOL.
For example, assume that you have previously downloaded and installed the registered version of SEE4C
and now you want to also call SEE functions from Visual Basic.
1. Make a backup copy of SEE32.DLL found in the Windows directory (\WINDOWS or \WINNT).
2. Download and install the evaluation version of SEE4VB (http://www.marshallsoft.com/see4vb.htm)
3. Compile and run the Visual Basic SEEVER example program found in the APPS directory created in
step 2 above. It should display the pop-up screen.
4. Restore SEE32.DLL saved in step 1 above.
5. Paste the key code value found in (the registered version of) KEYCODE.H into KEYCODE.BAS.
6. Run the Visual Basic SEEVER example program again. It should no longer display the pop-up screen.
A quicker and easier way would be to request multiple programming versions of SEE when a developer
license is purchased. There is no additional charge.
8.2 Using SEE with Unsupported Languages
The SMTP/POP3/IMAP Email Engine DLLs can be used with any application written in any language
capable of calling the Windows (95/98/ME/XP/2003/2012/Vista/Win7/Win8/NT/2000) API. SEE32.DLL
is required for all Win32 applications and SEE64.DLL is required for Win64 applications.
The following programming languages have defined declaration files:
C/C++
Visual Basic
VBA (Excel, Access,…)
PowerBASIC
Codegear Delphi
Fujitsu COBOL
ABSOFT FORTRAN
Compaq Visual Fortran
Visual FoxPro
Visual dBase
Alaska Xbase++
SEE.H
SEE32.BAS
SEE32.BAS
SEE32.BAS [not the same as above]
SEE32.PAS
SEE32.CBI
SEE32ABS.INC
SEE32DEC.INC [formerly Digital Visual Fortran]
SEE32.FOX
SEE32.CC
SEE32.CH
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 programming language, email us the declaration file!
27
9 Versions of the SMTP/POP3/IMAP Email Engine
The SMTP/POP3/IMAP Email Engine (SEE) SDK library is available in three versions. All three
versions have identical functionality.
9.1 Evaluation Version
The evaluation version can be differentiated from the other two versions by:
(1) The registration reminder screen is displayed at startup and every 5 minutes thereafter.
(2) The "X-OEM: " header in all outgoing email is branded with
"X-OEM: EVALUATION VERSION [http://www.marshallsoft.com]"
(3) Each email is followed by the following two lines:
"___________________________________________________________________"
"MarshallSoft SMTP/POP3 Engine. Programmers see www.marshallsoft.com"
The evaluation version may not be used for commercial purposes.
(4) The evaluation version stops working after 30 days.
9.2 Academic Version
The academic version can be differentiated from the other two versions by:
(1) There is no registration reminder screen.
(2) The "X-OEM: " header in all outgoing email is branded with
"X-OEM-To: ACADEMIC INSTITUTE [http://www.marshallsoft.com]"
(3) There are no lines added to the end of the email as in the evaluation version. That is, the lines shown
above in section 8.1 (3) are not present in the academic version.
DLL's purchased with the academic discount may not be distributed, and must be used for educational
purposes only.
9.3 Professional Version
The professional version can be differentiated from the other two versions by:
(1) There is no registration reminder screen.
(2) The "X-OEM: " header in all outgoing email is branded with your company name or Customer ID,
although most email clients do not display this.
(3) There are no lines added to the end of the email as in the evaluation version. That is, the lines shown
above in Section 8.1 (3) are not present in the professional version.
Your compiled DLL may be distributed with your compiled applications as specified by the software
license. However, the Keycode to the DLL cannot be distributed. The Professional version may be used
for commercial purposes. Licensing information is provided in Section 11.1
28
10 Resolving Problems
(1) First, be sure you are passing the proper key code. See Section 2.2, “Keycode”. Before attempting to
run any of the example programs, you should already be able to connect to the Internet (or TCP/IP LAN)
and run your email client program, such as Outlook, Eudora, or Pegasus Mail.
(2) If the registration reminder screen (popup) is still being displayed after purchasing a license, the
problem is that Windows is finding the evaluation version of the DLL before the registered DLL. The
solution is to delete (or zip up) all evaluation versions of SEE32.DLL or SEE64.DLL. Run SETUP and
then recompile.
(3) If "error -74" is received when calling seeAttach, the problem is that the keycode passed to seeAttach
does not match the keycode in the DLL. This is caused by (1) using the evaluation keycode (value = 0)
with the registered DLL, or (2) using the registered keycode with the evaluation DLL.
(4) 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 the connection problem, try connecting using TELNET,
located in the Windows directory. Use port 25 for SMTP, 110 for POP3, and 143 for IMAP. Also, make
sure that you have edited the file EMAIL.* with your ISP parameters.
(5) 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.
(6) Be sure to test the code returned from SEE functions. Then call seeErrorText to get the text
associated with the error code. (The file, ERRORS.TXT, contains a list of all error codes.)
For example (C Example):
Code = seeSmtpConnect(0,"mail.isp.net","<support@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)
We recommend the following steps if you believe that you have discovered a bug in the library:
(1) Create the smallest, simplest test program possible that demonstrates the problem.
(2) Document your exact machine configuration and what error the test program demonstrates.
(3) Email to support at marshallsoft.com the example source and log file.
If the problem is an error in the library and can be solved with an easy work-around, we will publish the
work-around. If the problem requires a modification to the library, we will make the change and make the
modified library available to our customers without charge.
29
11 Legal Issues
11.1 License
This license agreement (LICENSE) is a legal agreement between you (either an individual or a single
entity) and MarshallSoft Computing, Inc. for this software product (SOFTWARE). This agreement also
governs any later releases or updates of the SOFTWARE. By installing and using the SOFTWARE, you
agree to be bound by the terms of this LICENSE. If you do not agree to the terms of this LICENSE, do not
install or use the SOFTWARE
MarshallSoft Computing, Inc. grants a nonexclusive license to use the SOFTWARE to the original
purchaser for the purposes of designing, testing or developing software applications. Copies may be made
for back-up or archival purposes only. This product is licensed for use by only one developer at a time.
All developers working on a project that includes a MarshallSoft Software SDK, even though not working
directly with the MarshallSoft SDK, are required to purchase a license for that MarshallSoft product.
The "academic" registered DLL's may not be distributed under any circumstances, nor may they be used
for any commercial purpose.
The "professional" registered DLL's may be distributed (royalty free) in object form only, as part of the
user's compiled application provided the value of the Keycode is not revealed. The registered DLL's may
NOT be distributed as part of any software development system (compiler or interpreter) without our
express written permission.
Note that registered DLL’s do not expire. Registered users may download free updates for a period of one
year from the date of purchase.
11.2 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.
30
12 SEE Function Summary
Refer to the SMTP/POP3/IMAP Email Reference Manual (SEE_REF) for detailed information on the
SEE functions. There are 58 functions in the SMTP/POP3/IMAP Email Engine component library.
seeAbort
seeAttach
seeAttachmentParams
seeByteToShort
seeClose
seeCommand
seeConfigSSL
seeDebug
seeDecodeBuffer
seeDecodeUTF8
SeeDecodeUU
seeDeleteEmail
seeDriver
seeEncodeBuffer
seeEncodeUTF8
seeErrorText
seeExtractLine
seeExtractText
seeForward
seeForward
seeGetEmailCount
seeGetEmailFile
seeGetEmailLines
seeGetEmailSize
seeGetEmailUID
seeGetHeader
seeImapConnect
seeImapCopyMBmail
seeImapCreateMB
seeImapDeleteMB
seeImapFlags
seeImapListMB
seeImapMsgNumber
seeImapRenameMB
seeImapSearch
seeImapSelectMB
seeImapSource
seeIntegerParam
seeIsConnected
seeKillProgram
seePop3Connect
seePop3ConnectSSL
seePop3Source
seeQuoteBuffer
seeReadQuoted
seeRelease
seeSendEmail
seeSendHTML
seeShortToByte
seeSetErrorText
seeSleep
seeSmtpConnect
seeSmtpConnectSSL
seeSmtpTarget
seeStartProgram
seeStatistics
seeStringParam
seeUnQuoteBuffer
seeVerifyFormat
seeVerifyUser
Aborts SEE session.
Attaches SEE DLL.
Specify attachment content parameters.
Converts 8-bit character buffer to 16-bit.
Closes SMTP/POP3/IMAP Email Engine.
Transmit arbitrary SMTP/POP3/IMAP command.
Adds lines to SSL configuration file.
Returns debug information.
Decodes base-64 buffer.
Decodes UTF-8 to 16-bit Unicode.
Decodes UU-encoded text.
Deletes email.
Executes next SEE state.
Encodes base-64 buffer.
Encodes 16-bit Unicode to UTF-8.
Get text associated with error code.
Extracts line by line number.
Extracts line containing specified text.
Forward an email.
Forwards email.
Get number of emails waiting on server.
Read email file and save to disk.
Read email lines into buffer.
Get size of email message on server.
Get email message user ID string.
Get email header.
Connects to IMAP server.
Copies mail between IMAP mailboxes.
Creates a mailbox.
Deletes a mailbox.
Get, set, or delete IMAP message flags.
List all IMAP mailboxes.
Gets message #'s from buffer filled by seeImapSearch
Renames an IMAP mailbox.
Search for IMAP messages with specified flags.
Selects IMAP mailbox.
Specifies file from which to read IMAP email.
Parameters to control how email is sent/receive.
Tests if still connected to the email server.
Kill (terminate) external program.
Connects to POP3 server.
Connect to POP3 server via SSL proxy server.
Specifies file from which to read POP3 email.
Creates ISO-8859 encoded strings.
Reads (and quotes) a file to a buffer.
Releases SEE.
Sends email and attachments.
Sends HTML encoded email.
Converts 16-bit ASCII character buffer to 8-bit.
Sets error message language (French, German, etc.)
Sleep specified milliseconds.
Connects to SMTP server.
Connect to SMTP server via SSL proxy server.
Specifies SMTP output file.
Start external program.
Returns runtime statistics.
Sets SEE string parameter for email control.
Un-quotes buffer.
Check email address format.
Check email address with SMTP server.
31