Multipurpose Internet Mail Extensions (MIME)
The MIME utility is a standalone, user-mode, nonprivileged utility
that provides MIME interpretation and composition editing.
Messages in the VMSMAIL MAIL files can be extracted into text files
and then be read and interpreted using MIME. MIME formatted text
files can be composed using MIME, and then sent using VMSMAIL to
OpenVMS and other systems that have a MIME utility or MIME capable
MAIL application.
1 – Getting Started
The MIME utility is a tool for reading MIME-formatted messages that
are delivered in VMSMAIL messages. SMTP/MIME based mail systems,
such as the TCP/IP Services for OpenVMS mail system, deposit
incoming MIME-formatted messages into the VMSMAIL message store.
To read and extract binary attachments in such messages, use
VMSMAIL to extract the message into a text file; then run the
MIME utility to interpret its contents.
This approach would allow MIME to be easily backported and used
on previous versions of OpenVMS, without changing the existing
VMSMAIL environment.
1.1 – Invoking MIME
A foreign symbol is used to invoke MIME, for example,
$ MIME :== $SYS$SYSTEM:MIME.EXE
Note that a file name can be provided as a parameter to MIME, but
MIME opens that file for READ access only. No file modifications
will be allowed.
See Composing_Messages for more information.
2 – Composing Messages
MIME provides basic composition commands that allow you to create a
text file in MIME compliant format: NEW, OPEN/DRAFT, ADD, EDIT.
Use the NEW command, which runs the editor specified in the VMSMAIL
user profile, or specify the editor to use to create a text message.
You are prompted for a filename if one is not specified.
MIME> NEW [/edit="edit/teco"] [filename]
Or you can use the OPEN/DRAFT command to continue editing a previous
MIME message that was composed and saved.
MIME> OPEN/DRAFT [filename]
Then use the ADD and REMOVE commands to add attachments (or parts)
to the message or to remove them. Attachments are such as binary
image files, sound files, and compound documents, and also text.
MIME> ADD filename /CONTENT_TYPE="image/gif" /ENCODING=base64
MIME> REMOVE n
Where "n" is the attachment number. Use the LIST command to list
attachments and their characteristics.
Use the EDIT command to edit the text attachment.
MIME> EDIT n [/EDIT="edit/tpu"]
Where "n" is the attachment number. Use the LIST command to list
attachments and their characteristics. The editor can be specified
with the /EDIT qualifier or /NOEDIT to avoid the edit session.
Lastly, execute the SAVE command to write the composed outgoing
MIME text file.
MIME> SAVE
Note that the MIME command SHOW FILE_TYPES lists the file types
and their default settings for the ADD command. Other optional
file types: the file extension, its Content-Type/subtype, and the
encoding to use, are defined in MIME$FILETYPES.DAT file.
For more help, see the ADD command and SHOW FILE_TYPES
MIME$FILETYPES.DAT command.
3 – Extracting Attachments
A message is opened for read access in one of the following ways:
$ MIME filename.xxx
MIME> OPEN filename.xxx
MIME decodes the attachments (or parts) of the MIME encoded mail
message when opened, storing them as temporary files in your defined
MAIL directory.
If the file is opened with the OPEN command, MIME automatically lists
the attachments of the MIME encoded mail message. You can also list
the attachments and their characteristics (content-type/subtype,
encoding scheme, file name ...) with the following command:
MIME> LIST
Attachments, such as binary .JPG images, documents, spreadsheet
files, audio, DECsound, and text attachments, can be extracted into
their native file format using the following MIME command:
MIME> EXTRACT /ATTACHMENT=n [filename]
Where "n" is the attachment number listed with the MIME LIST command.
In a single part message, no attachment number is displayed. For this
case specify attachment number one.
The filename is optional, unless MIME cannot determine the file name
from the attachment information. In that case, MIME will prompt you
for a file name. The attachment is stored as a file in the default
directory.
See HELP EXTRACT for more information.
4 – Mailing MIME Messages
Whenever OpenVMS MAIL is used to send a MIME encoded file, if the
address in not a TCP/IP mail address, MAIL will add an extra blank
line between it's mail headers and the message. This is standard
for OpenVMS MAIL to separate its mail headers from the message.
Consequently, this blank line may pose a problem to most MIME
capable applications because it separates the MIME headers as well.
However, if a TCP/IP mail address is used, the TCP/IP for OpenVMS
SMTP service will send the MIME encoded mail with the properly
formatted (RFC822) mail message and MIME headers. A blank line
will properly separate the mail/MIME headers from the message body.
An alternative is to use the DCL command line to send the mail, (e.g.):
$ MAIL/NOSELF MimeFile.TXT smtp%"user@domain.com" /subject="Sending MIME"
Note that using SMTP for MIME mail requires TCP/IP Services for OpenVMS
5.0A + an SMTP patch or a later version.
There are other problems with SMTP HEADER position that can affect
MIME mail, please see Restrictions section for further information.
4.1 – Restrictions
On some SMTP/MIME mail systems, the message headers can be moved
from the beginning of the message, where they would normally
appear, to the end of the message, as a convenience to the
reader. Unfortunately, this makes it impossible for MIME
interpreters such as the MIME utility to interpret the contents
of the message. If SMTP messages are reformatted in this
manner, see the system administrator about disabling this
feature so that SMTP headers appear in their original position
at the beginning of the message. For TCP/IP Services for OpenVMS,
you can disable this feature using the command:
SET CONFIGURATION SMTP/OPTIONS=TOP
The MIME utility does not fully integrate with the VMSMAIL
user interface to send MIME messages over the internet. You can
use VMSMAIL to send MIME messages created and saved with the MIME
utility. Those messages can then be interpreted using MIME at the
destination OpenVMS host or with a MIME capable reader on another
system platform.
As of TCP/IP Services for OpenVMS version V5.0A, a known problem
exists where an extra NEWLINE character corrupts the MIME message
sent with SMTP. MIME messages sent with TCP/IP V5.0A and prior may
not be interpreted correctly by MIME programs other than the
OpenVMS MIME Utility. This problem was corrected in later versions
of TCP/IP Services for OpenVMS or with a patch to V5.0A.
SFF could be used as an alternative on systems prior to TCPIP
V5.0A and the SMTP Patch.
$ r TCPIP$SYSTEM:TCPIP$SMTP_SFF.EXE
Usage: SMTP_SFF infile_name [-log logfile_name] [-loglevel log_level]
infile_name : Name of text input file containing SMTP mail to send.
logfile_name : Name of text log file to log diagnostics to.
(Default SYS$OUTPUT).
log_level : Debug log level. 1 or 0 at this time. (Default 0)
See the TCP/IP Service release notes and documentation for more
information.
5 – MIME Procedures and BATCH
MIME will work properly with command procedures and in BATCH mode
provided the following guidelines are utilized.
When a foreign symbol is used to invoke MIME, for example,
$ MIME :== $SYS$SYSTEM:MIME.EXE
a file name can be provided as a parameter to MIME. But, MIME will
OPEN that file for READ access only. No file modifications will be
allowed.
The NEW command creates a MIME message and by default, opens
a text editor for editing or composing that MIME message. MIME
invokes the editor defined in the user's MAIL profile by the MAIL
SET EDIT command.
The /[NO]EDIT="edit/teco" qualifier allows manipulating this
default behavior. Use NEW/NOEDIT to disable starting the editor.
Use /EDIT="edit/edt" to override the editor specified by the MAIL
profile. Please see the NEW and EDIT command for more information.
An alternative is the OPEN/DRAFT command. This allows modifying a
previously processed MIME text file that was saved with MIME and
includes the MIME headers. This file can be blank or contain text
and possibly originated with the NEW command. Now other attachments
(or message parts) can be added to the basic MIME message structure
with ADD command.
6 – Viewing Messages
MIME operates as a standalone utility to interpret MIME-formatted
messages received by VMSMAIL. Use the VMSMAIL command EXTRACT/NOHEADER
to extract a MIME-formatted message received by VMSMAIL into a text
file.
MAIL> EXTRACT/NOHEADER filename
A message is opened for read access in one of the following ways:
$ MIME filename.xxx
MIME> OPEN filename.xxx
The OPEN command opens and decodes the message file, in preparation
for file viewing.
Use the MIME READ command to display the file.
MIME> READ
6.1 – Notes on Content-types
Not all attachments (content-type/subtypes, such as .DOC and .XLS),
can be displayed with the OpenVMS MIME utility. OpenVMS MIME
displays only the attachments that have been defined and have a
native OpenVMS viewer application installed and associated with
that defined content-type/subtype.
Example OpenVMS native viewer applications include NETSCAPE to
display .HTML and .HTM attachments, and Freeware X-VIEW application
to display image types .JPG, .GIF, and .JPEG subtypes.
Also note that foreign commands must be defined for invoking these
native viewer application images. This is so OpenVMS MIME can pass
a filename (string) representing the attachment to the viewer
application, for example:
NETSCAPE :== $ SYS$MANAGER:NETSCAPE-EXPORT-ALPHA-V303C4R-JAVA-GOLD.EXE
XV == "$ SYS$LIBRARY:XV.EXE"
Content-types/subtypes are defined internally by OpenVMS MIME and
in optional MIME$MAILCAP.DAT files.
The MIME command SHOW CONTENT lists the content types of files
that can be displayed with the READ command. Other optional types
are defined in MIME$MAILCAP.DAT file.
MIME> SHOW CONTENT_TYPE
See the READ command and SHOW CONTENT MIME$MAILCAP.DAT command for
more information and its security implications.