\begindata{text,538707692}
\textdsversion{12}
\template{default}
\formatnote{.ds CT

.ds CB - III-\\\\n(PN -}

\smaller{\smaller{\smaller{\bigger{\bigger{\bigger{\bigger{\majorheading{Andrew\
 and MIME: 

How Messages 8.5 Accommodates

the New Mail Format Standard

}\center{
Nathaniel Borenstein,  Bellcore

ATK Conference, June 26, 1992}

\heading{
Outline}


I.  MIME:  History and Overview


II.  Andrew and MIME


III. Status Report


IV.  Implications for Andrew, Email, and Other Multimedia Applications

\begindata{bp,538731848}
\enddata{bp,538731848}
\view{bpv,538731848,40,0,0}
\majorheading{I.  MIME:  History and Overview

}
Designed by Internet Engineering Task Force Working Group on Email Extensions


Politics:  remarkable alliance between X.400-lovers and X.400-haters


Working Group formed, Fall 1990.


First MIME draft, Spring 1991.


Proposed Internet Standard, Spring 1992.


\heading{Primary design goals:

}
Text mail in any human language.


Non-text mail in any conceivable media type.


Complete compatibility with RFC 821 and RFC 822.


Total robustness over all known real-world email transport systems.


Openness to multiple well-known formats.


Easy Extension to new types and formats.


Formal mechanism for type registration to promote interoperation.


Easy interoperation with X.400.

\begindata{bp,538731912}
\enddata{bp,538731912}
\view{bpv,538731912,41,0,0}
\majorheading{MIME:  Technical Overview

}
MIME allows extended bodies, with type information in header fields.


Content-type header field provides type/subtype, optional parameters


\leftindent{Seven types are defined, many subtypes are expected.

}
Content-Description gives a textual description of the body data


Content-ID gives unique identifier for body parts.


Content-xxx are the only header fields that matter in body parts.


\majorheading{Content-Transfer-Encoding}


Binary and long-line data does not survive email transport


Need to specify encoding algorithm for email transport


Two transfer-encoding algorithms defined


\heading{Base64}


The densest simple (non-compressed) encoding possible for email.


33% data expansion


Uses only A-Z a-z 0-9 + / =


\heading{Quoted-printable

}
Maximizes readability of included ASCII


All ASCII characters unchanged except =


Other characters represented as =0A, etc.


Up to 200% expansion.


\heading{Encoding Design Rationale

}
uuencode -- insufficiently robust


Base64 based on PEM algorithm



\majorheading{Simple Examples

}
From: Nathaniel Borenstein 

	<nsb@thumper.bellcore.com>

To: Ned Freed <ned@innosoft.com

Content-type: text/plain

Content-Transfer-Encoding: 

	quoted-printable


This is text with a single non-ASCII character, =0D.


----------------


From: Nathaniel Borenstein 

	<nsb@thumper.bellcore.com>

To: Ned Freed <ned@innosoft.com

Content-type: image/gif

Content-Transfer-Encoding: base64


R0lGODdhSgGgAfUAAENDQ01NTTw8PEVF...

\begindata{bp,538731976}
\enddata{bp,538731976}
\view{bpv,538731976,42,0,0}

\majorheading{The MIME Content-types

}
MIME defines seven content-types.  Most extension via subtypes.


\heading{1. text.  

}
Subtypes:  plain, richtext.  (More expected.)


\leftindent{Critical parameter:  charset.  


"text/plain; charset=iso-8859-1" permits French email.


}Other character sets: ISO-8859-[1-9].


Deferred, but expected:  Asian languages, UNICODE, ISO 10646.  Politics...


text/richtext is an extremely simple "common denominator" markup language for 
enriched text.


\majorheading{A Hebrew/English Richtext Example

}
From: Nathaniel Borenstein 

	<nsb@thumper.bellcore.com>

To: Ned Freed <ned@innosoft.com>

Subject: Hebrew richtext

Content-type: text/richtext; 

	charset=iso-8859-8

Content-transfer-encoding: quoted-printable


This is <bold> enriched

=FA=E9=F8=E1=F2 </bold> mail.


\begindata{raster,538737160}
2 0 68266 68266 0 0 700 158
bits 538737160 700 158
zm30l0cg03hc0	s30kc0zn |
zm30l0cg03hc0	s30kc0zn |
zgc0x300cmc0g	03p300cj0cg30	h03gc0r |
zgc0x300cmc0g	03p300cj0cg30	h03gc0r |
gGc0h0cj!c0h0c	03l3c30gGq03m	ccic003f0g0ch	30m!c0g3c03c0
 q30c0k |
gGc0h0cj!c0h0c	03l3c30gGq03m	ccic003f0g0ch	30m!c0g3c03c0
 q30c0k |
gc0g0clf0c0g30	0cj0ch0ch30c0	g30k30h0cm30i	c0!0c300c03h0c
 lc0h0cgc0g0ck	0cj30h0ch |
gc0g0clf0c0g30	0cj0ch0ch30c0	g30k30h0cm30i	c0!0c300c03h0c
 lc0h0cgc0g0ck	0cj30h0ch |
gc0j0c0fgc0f0	c0303c0cm0cg!30	c0m300coc0g0c	gc0!0c300cm30
 hc0h0cgc0r0cc0	j |
gc0j0c0fgc0f0	c0303c0cm0cg!30	c0m300coc0g0c	gc0!0c300cm30
 hc0h0cgc0r0cc0	j |
gc00cf03f0f30	3fhccc3f0G0cf0	3f0cf03c03f00c	h30c3f0cf03f0
 cf03f0G03f03c	0cf0h03gc3gcf	03f0G0c3cG0cf0	c0cf30G03f0cf
 hG03f00cgc03f	03f0cf03f03003	f03f0f3003k |
gc00cf03f0f30	3fhccc3f0G0cf0	3f0cf03c03f00c	h30c3f0cf03f0
 cf03f0G03f03c	0cf0h03gc3gcf	03f0G0c3cG0cf0	c0cf30G03f0cf
 hG03f00cgc03f	03f0cf03f03003	f03f0f3003k |
gG0f0cc0!cc0c	hccc00c300f0c	gcf$0ch3f!0cf0	cc0cf0cc0c30"0c
 0f0cj0cgf0cc0c	c0!cc300f0cc0	!ccc0cc0cf0c0	gc0cc!0cg!c0cc
 0cf0cc0cg!0cc0	!ccgc030i |
gG0f0cc0!cc0c	hccc00c300f0c	gcf$0ch3f!0cf0	cc0cf0cc0c30"0c
 0f0cj0cgf0cc0c	c0!cc300f0cc0	!ccc0cc0cf0c0	gc0cc!0cg!c0cc
 0cf0cc0cg!0cc0	!ccgc030i |
gc00cgc0!cci!c3	fc30!0c3fcc!0c	0ffc0ch30cc0c	c00ffcc0c3c030
 0ffc"0cj03gc0	c3!c0!cc30!0c	c0!ccc0cffcc0	hc0cffc0cg!c0
 !0cc00ffcg0cg	c0!cc03k |
gc00cgc0!cci!c3	fc30!0c3fcc!0c	0ffc0ch30cc0c	c00ffcc0c3c030
 0ffc"0cj03gc0	c3!c0!cc30!0c	c0!ccc0cffcc0	hc0cffc0cg!c0
 !0cc00ffcg0cg	c0!cc03k |
gc00cgc0!ccic3	cc0c30!0cc0cc	"0cg0ch30cc0c	c00cg!c0!300c
 g"0cg30i"c030	c0ccf030!0cc0	!ccc0ccgc0hc0	ccg0cg!c0!0cc0
 0ch0cgc0!cc0c	i0cg |
gc00cgc0!ccic3	cc0c30!0cc0cc	"0cg0ch30cc0c	c00cg!c0!300c
 g"0cg30i"c030	c0ccf030!0cc0	!ccc0ccgc0hc0	ccg0cg!c0!0cc0
 0ch0cgc0!cc0c	i0cg |
gc0ccgc0!cc0c	hc0cc0c30cc0c	c0cc$0ch30cc0c	c0!0cc0cc0c30
 cc#0ck30c0cc0c	c0ccg30cc0cc3	!ccG!0cc0g!c0	cc!0cg!c0cc0c
 c0$0cc0!cc30k |
gc0ccgc0!cc0c	hc0cc0c30cc0c	c0cc$0ch30cc0c	c0!0cc0cc0c30
 cc#0ck30c0cc0c	c0ccg30cc0cc3	!ccG!0cc0g!c0	cc!0cg!c0cc0c
 c0$0cc0!cc30k |
gc00cg3f!0c3f	hc0c3fc0f!0c3f	cc0c3f03f03fh	G03f0c003f0c0
 c3f00f03f03f!0c	k0cc0c3f0G03fc	0f!0c3ccc0cc0	03f0c003f0G03
 f03f03f03f03f0	c003f03f03f03f	!0cc0k |
gc00cg3f!0c3f	hc0c3fc0f!0c3f	cc0c3f03f03fh	G03f0c003f0c0
 c3f00f03f03f!0c	k0cc0c3f0G03fc	0f!0c3ccc0cc0	03f0c003f0G03
 f03f03f03f03f0	c003f03f03f03f	!0cc0k |
m0czrc0wc0jc0	r0cn30h |
m0czrc0wc0jc0	r0cn30h |
03nc0n0cgc0ic0	w03uc0zo |
03nc0n0cgc0ic0	w03uc0zo |
zg0cgc0m0czpc0	jc030j0cj03o |
zg0cgc0m0czpc0	jc030j0cj03o |
i03zh0ch0ci0c	j03k3003zjc0o	c0g03gc0i |
i03zh0ch0ci0c	j03k3003zjc0o	c0g03gc0i |
gGc0j!c0g!c0g	G!c030ic0hc0g	30g0c3fpf0g0c	k0ck03kc0i30m
 30k30p |
gGc0j!c0g!c0g	G!c030ic0hc0g	30g0c3fpf0g0c	k0ck03kc0i30m
 30k30p |
g0ckf0c0hc0gc0	i0chc0g03j0c!c0	ccl30030c30k!03	g03h0cm03i0cg
 c0k0cg03gc0j0c	l |
g0ckf0c0hc0gc0	i0chc0g03j0c!c0	ccl30030c30k!03	g03h0cm03i0cg
 c0k0cg03gc0j0c	l |
g0ch0cc0gf0c0	hc0gc0lc0g0cj	0c!c0j0cgc0g03	g30mc0hc0ic0zp
 c0g |
g0ch0cc0gf0c0	hc0gc0lc0g0cj	0c!c0j0cgc0g03	g30mc0hc0ic0zp
 c0g |
g0c03f03fhccc3	f03fc0gc00cf0	3f03f03fc0g30	0cf03f03fc!c3
 c0cf0cf03f03f0	3f03gGh3f03f0	f3g3cm0c03zp |
g0c03f03fhccc3	f03fc0gc00cf0	3f03f03fc0g30	0cf03f03fc!c3
 c0cf0cf03f03f0	3f03gGh3f03f0	f3g3cm0c03zp |
g#0ch!cc0cc0c3	gG0f0cc0cc0c!c0	gc00f0cc0cc0c	cc!c0f0cf0cc0
 cc0cc0cff030h	c0cc0cccc00cz	c0uc0h |
g#0ch!cc0cc0c3	gG0f0cc0cc0c!c0	gc00f0cc0cc0c	cc!c0f0cf0cc0
 cc0cc0cff030h	c0cc0cccc00cz	c0uc0h |
g"0chc0c3cffc	!c0gc00cgGcffc	!c0!30!0cGcc0c	cc"c0cc0cc0c3
 !c0c3g30hc0!0c	ccc030zo30o |
g"0chc0c3cffc	!c0gc00cgGcffc	!c0!30!0cGcc0c	cc"c0cc0cc0c3
 !c0c3g30hc0!0c	ccc030zo30o |
g"0cic3ccg!c0	gc00cgc00cg!c0	g"0cc0!0ccfg!c0	cc0c!c030c0c3
 g30g30c0!0ccc	!c0p0cg0ckc0q	03i0cj |
g"0cic3ccg!c0	gc00cgc00cg!c0	g"0cc0!0ccfg!c0	cc0c!c030c0c3
 g30g30c0!0ccc	!c0p0cg0ckc0q	03i0cj |
g#0chc0cc0c!c0	gc00cgc0cc0c!c0	g03!0cc0cc0cc0	g!c0cc0cc0cc0c
 c0c3g30"c0cc0c	ccc3uc0l03ic0	m30k |
g#0chc0cc0c!c0	gc00cgc0cc0c!c0	g03!0cc0cc0cc0	g!c0cc0cc0cc0c
 c0c3g30"c0cc0c	ccc3uc0l03ic0	m30k |
030c03f03fhc0	c3f03fc0gc00c	g3f03f03fc0hcc	0c3f03fc3fc3f0
 c0cc0c3f03f03f	03g0f03f03f03	f0c0ccjc030p03	i30jc0hc0jc0l |
030c03f03fhc0	c3f03fc0gc00c	g3f03f03fc0hcc	0c3f03fc3fc3f0
 c0cc0c3f03f03f	03g0f03f03f03	f0c0ccjc030p03	i30jc0hc0jc0l |
hc0g0czwc0l0c	03i300cpc0kc0	jc0p |
hc0g0czwc0l0c	03i300cpc0kc0	jc0p |
s03zzi300czm30	g |
s03zzi300czm30	g |
i30n0co0cv03g	c0x03n0ckc0r |
i30n0co0cv03g	c0x03n0ckc0r |
zc030pc0p03y03	t30k30i |
zc030pc0p03y03	t30k30i |
g3fh!c00c03l0c	ccg0c03kc0j0c	i30tc0s30v03n |
g3fh!c00c03l0c	ccg0c03kc0j0c	i30tc0s30v03n |
g!c0gc0g30hc0	33i!0cg0cn30c3	g!0c30i03h30l	c0p0cp30t03h0c
 h |
g!c0gc0g30hc0	33i!0cg0cn30c3	g!0c30i03h30l	c0p0cp30t03h0c
 h |
gc0hc0k30gc0g	!0cg0cmc0i0cg	30i03l0ci30r03	qc0v |
gc0hc0k30gc0g	!0cg0cmc0i0cg	30i03l0ci30r03	qc0v |
gc0!0cGgf03f03	f0G03f0g!0c3f	0ff0cf03f0!c0	gcf03c03f0cf0
 G03f0cccff0c0	r0c03zn03m |
gc0!0cGgf03f03	f0G03f0g!0c3f	0ff0cf03f0!c0	gcf03c03f0cf0
 G03f0cccff0c0	r0c03zn03m |
g3f!0c!c030c0	cc0c30gc0g0ffc	c0cc0cf0cc0c!c0	gf0"c0cf0c30!0c
 3303s0ci03g30	o!30k03gc0hc0	i03l |
g3f!0c!c030c0	cc0c30gc0g0ffc	c0cc0cf0cc0c!c0	gf0"c0cf0c30!0c
 3303s0ci03g30	o!30k03gc0hc0	i03l |
hcc0c!c030Gcc	g30i!0cGcc0cc0	0ffcccc0gc0g!c0	!0c300ffc0c03
 zhc0h30l3003k	0cr |
hcc0c!c030Gcc	g30i!0cGcc0cc0	0ffcccc0gc0g!c0	!0c300ffc0c03
 zhc0h30l3003k	0cr |
hcc0c!c030c00c	g30h"0cc0!0cc0	0cgccc0gc0g!c0	!0c300cg0c03i
 30!0cg0ci0cvc0	tc0j30i |
hcc0c!c030c00c	g30h"0cc0!0cc0	0cgccc0gc0g!c0	!0c300cg0c03i
 30!0cg0ci0cvc0	tc0j30i |
gc0cc3c!c030c0	cc0c30!c0g!0c	c0cc0cc0!0ccc	c0gc0g!c0cc0c
 30cc0c33030cu	03o03zi0cg |
gc0cc3c!c030c0	cc0c30!c0g!0c	c0cc0cc0!0ccc	c0gc0g!c0cc0c
 30cc0c33030cu	03o03zi0cg |
g3f03ccG0c303f	03f00f03f0g!0c	3f0ff0c003f033	hc003f03f!0c0f
 03f0!c0f0q0cp	30q0ck03p |
g3f03ccG0c303f	03f00f03f0g!0c	3f0ff0c003f033	hc003f03f!0c0f
 03f0!c0f0q0cp	30q0ck03p |
k0c30kc0zq0cq	c0zk03h30h |
k0c30kc0zq0cq	c0zk03h30h |
k03c0wc0sc0m30	p30h0cl30rc0m |
k03c0wc0sc0m30	p30h0cl30rc0m |
03p0czkc0r0c03	h30xc030s |
03p0czkc0r0c03	h30xc030s |
sc0k03o0cr03x	03i30ic030j30	0cjc0l |
sc0k03o0cr03x	03i30ic030j30	0cjc0l |
hc0l03l0ck30h	0c03gc0l30s0c	ztc0i |
hc0l03l0ck30h	0c03gc0l30s0c	ztc0i |
ic0300cnc030h	30hc0oc030mc0	30v0ckc0s0co |
ic0300cnc030h	30hc0oc030mc0	30v0ckc0s0co |
l03gc0zj0ckc0	kc0gc0k30g30m	c0h30j0cpc0i30	g |
l03gc0zj0ckc0	kc0gc0k30g30m	c0h30j0cpc0i30	g |
zi0czc0i30yc0	y |
zi0czc0i30yc0	y |
p03zk30zh0czn |
p03zk30zh0czn |
zj03zr30h03q03	j30g03ic0g30h |
zj03zr30h03q03	j30g03ic0g30h |
oc0hc0j30g0cn	03gc0i0cic0i30	nc030v0cx |
oc0hc0j30g0cn	03gc0i0cic0i30	nc030v0cx |
g30zzj30o30kc0	hc0n3003r |
g30zzj30o30kc0	hc0n3003r |
u30k300ci!c0zg	30jc0u03pc0l |
u30k300ci!c0zg	30jc0u03pc0l |
i0c03gc030lc0	g30g0cs!30mc0	v30m300cp0ck30	hc0 |
i0c03gc030lc0	g30g0cs!30mc0	v30m300cp0ck30	hc0 |
h0cpc0w30i03m	3003zzi |
h0cpc0w30i03m	3003zzi |
p03zl30g03nc0	l30m03j03ic0u |
p03zl30g03nc0	l30m03j03ic0u |
n3003p30h03jc0	zg30n0cs30h03	h03h30h03h |
n3003p30h03jc0	zg30n0cs30h03	h03h30h03h |
03j0ffcv0cgc0	n0cq03lc0l03zm |
03j0ffcv0cgc0	n0cq03lc0l03zm |
k0clc030gc0m0c	k30m!0cc0g03o	0ckc0jc0mc0i03	s |
k0clc030gc0m0c	k30m!0cc0g03o	0ckc0jc0mc0i03	s |
k0cm30i03g0ci	0cl30zt30w03j |
k0cm30i03g0ci	0cl30zt30w03j |
k0cgc0c3f03f!0c	G03c0cf03f03f	g0c3f0cf03f!0c	cf03f0cf03f03f
 03f03c03c0k30	h03k30zgc003i	c0l |
k0cgc0c3f03f!0c	G03c0cf03f03f	g0c3f0cf03f!0c	cf03f0cf03f03f
 03f03c03c0k30	h03k30zgc003i	c0l |
gGcffcGcff033	!0cc0cc0c30gc0	f0cc!0chc0cf0c	c0cc0cf0cc0cf0
 c00cc0cc!0cgc0	0chc030s0cj0c	h0c03p03lc0h |
gGcffcGcff033	!0cc0cc0c30gc0	f0cc!0chc0cf0c	c0cc0cf0cc0cf0
 c00cc0cc!0cgc0	0chc030s0cj0c	h0c03p03lc0h |
k0cg0c0ffcc0!0c	30g!c0cc0ci3c	!0cc0!ccc0cc0c	c0c3fc3c0cg0c
 gc0u03u30t0cg |
k0cg0c0ffcc0!0c	30g!c0cc0ci3c	!0cc0!ccc0cc0c	c0c3fc3c0cg0c
 gc0u03u30t0cg |
k0cg!0cgc0!0c	30g!c0cc0ci03	!0cc0!ccc0cc0c	c0cc0c030cg0c
 gc0m0ch30xc0h	0c03n0ck |
k0cg!0cgc0!0c	30g!c0cc0ci03	!0cc0!ccc0cc0c	c0cc0c030cg0c
 gc0m0ch30xc0h	0c03n0ck |
hc003g0cg33!0c	c0cc3c30"c0c3	fc0c30gc0cc0c	c0!ccc0cc0cc0
 cc0cc0cc!0cgc0	r30l03zc0m |
hc003g0cg33!0c	c0cc3c30"c0c3	fc0c30gc0cc0c	c0!ccc0cc0cc0
 cc0cc0cc!0cgc0	r30l03zc0m |
k0ffcc0c3f03f	03cc0f03f0!c0	0c3fh3f!0c3f03	30c0c3f0c0c3fc
 3f03f03f03f0l	30l30i30i300c	g03zi |
k0ffcc0c3f03f	03cc0f03f0!c0	0c3fh3f!0c3f03	30c0c3f0c0c3fc
 3f03f03f03f0l	30l30i30i300c	g03zi |
w"0czg0cznc0i	03s |
w"0czg0cznc0i	03s |
gc0kc0l300cg03	f0w03rc0g30h03	zhc0l30i |
gc0kc0l300cg03	f0w03rc0g30h03	zhc0l30i |
j03zuc0w0cmc0	oc0j30i0ch |
j03zuc0w0cmc0	oc0j30i0ch |
h03s0cj0cj0cq	0ci0c03gc0pc0	l0cjc0pc0ic0j |
h03s0cj0cj0cq	0ci0c03gc0pc0	l0cjc0pc0ic0j |
gGcck30p300fh	c00fl03h0c03j	3cl0czi30v |
gGcck30p300fh	c00fl03h0c03j	3cl0czi30v |
g!0cg0c03i!c0	300ckf0g0fi0f	i30j0ckc00coc0	zh0csc0 |
g!0cg0c03i!c0	300ckf0g0fi0f	i30j0ckc00coc0	zh0csc0 |
g!0cw0fi0f0ct	0cx03gc0h03hc0	gc0h0ckc0g30m |
g!0cw0fi0f0ct	0cx03gc0h03hc0	gc0h0ckc0g30m |
g!0cf03c03f0g	03c03fh3fcffc	Gc3f03fcffc3f	c3Gg0fG0fcfHc3
 cfg0f303f03c0	0ck0ck0cgc0h0c	zp |
g!0cf03c03f0g	03c03fh3fcffc	Gc3f03fcffc3f	c3Gg0fG0fcfHc3
 cfg0f303f03c0	0ck0ck0cgc0h0c	zp |
g0c0f#0ch"c0g	f0Gcffc"f0Gcf	f0G0fg03cf03c0	0f03c3cfg0ccc
 g!c00czg30q0c	o0ci |
g0c0f#0ch"c0g	f0Gcffc"f0Gcf	f0G0fg03cf03c0	0f03c3cfg0ccc
 g!c00czg30q0c	o0ci |
g#0c03c030gc0	3chH0ff0g!f0!0f	H0fg03cf03c00f	03c3cfg0ccc3f
 !c0!0cl03h30x	0cq30k |
g#0c03c030gc0	3chH0ff0g!f0!0f	H0fg03cf03c00f	03c3cfg0ccc3f
 !c0!0cl03h30x	0cq30k |
g#0cg30hc003h	f0!0ff0g!f0!0f	f0!0fg03cfh0f	03c3cfg0ccc"c0
 0ci30pc030g0c	v03m0cg03h |
g#0cg30hc003h	f0!0ff0g!f0!0f	f0!0fg03cfh0f	03c3cfg0ccc"c0
 0ci30pc030g0c	v03m0cg03h |
g%0ch"c0gf0G0f	f0g!f0G0ff0G0f	g03cfh0f03c3G	g0ccc"c00cgc0
 30g0cw03hc0pc0	p |
g%0ch"c0gf0G0f	f0g!f0G0ff0G0f	g03cfh0f03c3G	g0ccc"c00cgc0
 30g0cw03hc0pc0	p |
g"0c3f03f0g03	f03fh3fcf0ff0	03fc3fcf0f3fc3	Gg0fcfg030fHfc
 g!0c3fc3f03f03	f0zk30o03hc0l |
g"0c3f03f0g03	f03fh3fcf0ff0	03fc3fcf0f3fc3	Gg0fcfg030fHfc
 g!0c3fc3f03f03	f0zk30o03hc0l |
zzhc0j03hc0o0c	qc0l03n |
zzhc0j03hc0o0c	qc0l03n |
03m30ic0zl03r	0c03qc0g30g0c	i0ct |
03m30ic0zl03r	0c03qc0g30g0c	i0ct |
zzl0cu0czk |
zzl0cu0czk |
\enddata{raster, 538737160}
\view{rasterview,538737160,43,0,0}
\begindata{bp,538732040}
\enddata{bp,538732040}
\view{bpv,538732040,44,0,0}
\heading{2. image.  

}
Subtypes GIF, JPEG.  Others expected.


\heading{3. audio.  

}
Subtype "basic" for single-channel 8Khz u-law.  Others expected.


\heading{4.  video.  

}
Subtype "mpeg".  Others plausible.


\heading{5.  multipart.  

}
Allows multiple body parts of different types, each structured like a 
mini-message.


Subtypes: mixed, alternative, parallel, digest.


\leftindent{Mixed: simple (serial) combinations.


Alternative: multiple representation of the same data.


Parallel: for parallel presentation \italic{if possible}.


Digest: has special defaults for message digests.

}
All multipart subtypes share a syntax, allowing future experimentation in 
structured types, etc.


From: Nathaniel Borenstein 

	<nsb@bellcore.com>

To: Ned Freed <ned@innosoft.com>

Subject: A multipart example

Content-Type: multipart/mixed; 

	boundary=CUT_HERE

\begindata{bp,539779080}
\enddata{bp,539779080}
\view{bpv,539779080,54,0,0}
--CUT_HERE

Content-type: text/plain


Hey, Ned, look at this neat picture:

--CUT_HERE

Content-type: image/gif

Content-Transfer-Encoding: base64


5WVlZ6enqqqqr....

--CUT_HERE

Content-type: text/plain


Wasn't that neat?

--CUT_HERE--


From: Nathaniel Borenstein <nsb>

To: Ned Freed <ned@innosoft.com>

Subject: An alternative example

Content-Type: multipart/alternative; 

	boundary=CUT_HERE


--CUT_HERE

Content-type: text/plain


Hey, Ned, Isn't MIME great?

--CUT_HERE

Content-type: text/richtext


Hey, <bold> Ned</bold>, isn't

MIME <italic>great</italic>?

--CUT_HERE

Content-type: application/ODA

Content-Transfer-Encoding: base64


5WVlZ6enqqqqr....

--CUT_HERE--

\begindata{bp,538732104}
\enddata{bp,538732104}
\view{bpv,538732104,45,0,0}
\heading{6.  message.  

}
Subtypes:  rfc822, partial, external-body


\leftindent{"message/rfc822" allows encapsulated message.


"message/partial" allows automatic fragmentation and reassembly.


"message/external-body" allows data to be passed by reference (hyperlinks).

}
\heading{7.  application.  

}
Catch-all.  


Subtypes: PostScript, ODA.


Most creative extensions expected here.


Possible examples:  

\leftindent{
EDI


Acknowledgement-request


Interactive-survey

}
Already registered:

\leftindent{
ATOMICMAIL


Andrew-inset}\leftindent{

}\
\begindata{bp,539779336}
\enddata{bp,539779336}
\view{bpv,539779336,55,0,0}
\majorheading{A Complex MIME Message

}
From: Nathaniel Borenstein 

	<nsb@thumper.bellcore.com>

To: Ned Freed <ned@innosoft.com>

Subject: A complex example

Content-Type: multipart/mixed; 

	boundary=FOOBAR


This is the preamble area, which is ignored.

--FOOBAR

Content-type: text/plain; charset=US-ASCII


PLAIN TEXT GOES HERE.

--FOOBAR

Content-Type: audio/basic

Content-Transfer-Encoding: base64


BASE64-ENCODED AUDIO DATA

--FOOBAR

Content-Type: image/gif

Content-Transfer-Encoding: Base64


BASE64-ENCODED IMAGE DATA GOES HERE

--FOOBAR

Content-type: text/richtext


This is <italic>richtext</italic>.

<nl><nl> Isn't it <bigger>cool?</bigger>

--FOOBAR--

This is the "epilogue" area, also ignored.

\begindata{bp,539779464}
\enddata{bp,539779464}
\view{bpv,539779464,56,0,0}
\majorheading{II. Andrew and MIME

}
Andrew's new MIME Support is completely integrated.


Looks mostly like Andrew always did.


Principle MIME types translated directly into ATK:


	text/richtext

	image/x-xwd

	audio/basic

	application/andrew-inset

	multipart/mixed

	multipart/alternative

	message/rfc822


Unrecognized MIME types are displayed with the new "mailobj" inset:


\description{\leftindent{Subclass of sbutton


When clicked on, calls metamail on the unrecognized part.


So far, still used for some important types:


\leftindent{text/plain and text/richtext in alternate charsets

image/gif, image/jpeg

message/external-body

message/partial

Various others}}

}
\center{\bigger{User-visible Differences from the Old Andrew

}}\leftindent{\description{
"Alternative" buttons


Choice of Sending Formats

\leftindent{"Which Format?" dialog box

"*.mailsendingformat" preference

}
New "mailobj" has crufty interface for \italic{sending} non-Andrew types (e.g. 
GIF)


Occasional Loss of Small Bits of Information


Arguably, always safe to send formatted mail.}}}

\begindata{bp,538732168}
\enddata{bp,538732168}
\view{bpv,538732168,46,0,0}
\majorheading{Technical Changes

}
New mailobj Inset


New dataobj methods:

\leftindent{dataobj_WriteOtherFormat

dataobj_ReadOtherFormat}


Moderately general method for reading & writing "alternative" data stream


So far: dataobject_OTHERFORMAT_MAIL


Andrew mail without styles is written as text/plain.


Andrew mail without insets is written as text/richtext.


Andrew mail with insets is written as multipart/alternative.


\leftindent{\description{Alternative #1 is text/plain.

	

Alternative #2 is multipart/mixed.  Within it, text parts are text/plain or 
text/richtext, and other insets use WriteOtherFormat.}}


Each inset writes itself as one part of a MIME multipart.


Default method writes:


\example{--boundary

Content-type: application/andrew-inset


\\begindata\{etc, etc.\}

}
MIME-smart insets can write themselves out in more native MIME mode, or as 
multipart/alternative with two or three representations (e.g. text, 
postscript, and zip).


Current MIME-smart insets:  text, raster, alink


Reading MIME format is cruftier:  


\leftindent{There are dynamic binding issues that make it hard to do "right".


Currently, calls to raster_ReadOtherFormat and alink_ReadOtherFormat are 
"hard-wired" into text822.c.

}
\majorheading{Areas for Improvement:

}
Support for more MIME image types (reading many, writing at least one standard 
type!)


Real support for non-ASCII character sets (not just ISO-8859-1).


Integrated support for message/external-body, message/partial


Support for non-ASCII data in email header fields.


Good mechanism for dynamic binding from MIME content-type name to Andrew inset 
name.

\bigger{
\majorheading{III. Status Report

}
Andrew version on CD-ROM Release


At least 25 other MIME implementations under way.


At least 4 public domain MIME implementations available now.


One of these, metamail, includes patches for over a dozen popular UNIX & DOS 
mail readers.  After two months, in use at hundreds of sites.


MIME -> Proposed Internet Standard (RFC 1341)


Other relevant RFC's:  1342, 1343, 1344.


\majorheading{Access to MIME

}
\heading{Andrew:}   CD-ROM Release


\heading{Metamail:}  Via mailserver or anon ftp.


Mail to mailserver@thumper.bellcore.com.


\leftindent{Subject: autosend: mime-txt


Subject: autosend: metamail-info

}
Anonymous ftp:  thumper.bellcore.com, pub/nsb.


\heading{Interesting Observation

}
MIME & Metamail are generating increased interest in AMS as a good "native 
MIME" interface (!)



}}}}
}}}\enddata{text,538707692}
