//
// Copyright (c) 2008, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 14 May 08 Brian Frank Creation
//
using inet
**
** Utilities to deal with all the idiosyncrasies of MIME.
**
class MimeUtil
{
**
** Encode the specified text into a "encoded word" according to
** RFC 2047. If text is pure ASCII, then it is returned as is.
** Otherwise encode using UTF-8 Base64.
**
static Str toEncodedWord(Str text)
{
if (text.isAscii) return text
return "=?UTF-8?B?" + Buf().print(text).toBase64 + "?="
}
**
** Return the addr-spec or "local@domain" part of an email
** address string. The result is always returned as "<addr>".
** The addresses may be formatted with or without a display name:
**
** [email protected] => <[email protected]>
** Bob Smith <[email protected]> => <[email protected]>
** "Bob Smith" <[email protected]> => <[email protected]>
**
static Str toAddrSpec(Str addr)
{
addr = addr.trim
lt := addr.index("<")
gt := addr.index(">")
if (lt != null && gt != null) return addr[lt..gt]
return "<$addr>"
}
**
** Write a MIME header formatted as "name: body\r\n".
** NOTE: hook to potentially fold header lines over 1000 here
**
internal static Void encodeHeader(OutStream out, Str name, Str val)
{
out.print(name).print(": ").print(val).print("\r\n")
}
}