January 25th, 2005


JavaMail's character set support is janky. Is this just because it predates the whole InputStream/OutputStream vs Reader/Writer rationalisation? If you blithely write:

message.setContent("this is a string, it cost £20 to write", "text/plain");

It may emit QP content like so:

Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

this is a string, it cost =A320 to write

which is broken, argh. The "UTF-8" in the charset is just taken from the system property mail.mime.charset, or file.encoding, but the content has been encoded as Latin-1. In order to fix, I had to write:

message.setContent(new String(bodyString.getBytes("UTF-8"), "ISO-8859-1"), "text/plain");

which is just ridiculous. Between this and the pre-Collections API and other nastiness, I'm seriously considering the possibility of writing my own mail-encoding routines, although not really happy about it. Last time I tried to use GNUmail, it had other bugs, which was also frustrating.
  • Current Music
    Infected Mushroom - Sailing In The Sea Of Mushroom [Classical Mushroom]
  • Tags