/** Returns the value of the Content-Transfer-Encoding header field. */ public String getEncoding() throws MessagingException { String encoding = getHeader(CONTENT_TRANSFER_ENCODING_NAME, null); if (encoding != null) { encoding = encoding.trim(); if (encoding.equalsIgnoreCase("7bit") || encoding.equalsIgnoreCase("8bit") || encoding.equalsIgnoreCase("quoted-printable") || encoding.equalsIgnoreCase("base64")) { return encoding; } HeaderTokenizer ht = new HeaderTokenizer(encoding, HeaderTokenizer.MIME); for (boolean done = false; !done; ) { HeaderTokenizer.Token token = ht.next(); switch (token.getType()) { case HeaderTokenizer.Token.EOF: done = true; break; case HeaderTokenizer.Token.ATOM: return token.getValue(); } } return encoding; } return null; }
/** * Constructor that takes a Content-Type string. The String is parsed into its constituents: * primaryType, subType and parameters. A ParseException is thrown if the parse fails. * * @param s the Content-Type string. * @exception ParseException if the parse fails. */ public ContentType(String s) throws ParseException { HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); HeaderTokenizer.Token tk; // First "type" .. tk = h.next(); if (tk.getType() != HeaderTokenizer.Token.ATOM) throw new ParseException(); primaryType = tk.getValue(); // The '/' separator .. tk = h.next(); if ((char) tk.getType() != '/') throw new ParseException(); // Then "subType" .. tk = h.next(); if (tk.getType() != HeaderTokenizer.Token.ATOM) throw new ParseException(); subType = tk.getValue(); // Finally parameters .. String rem = h.getRemainder(); if (rem != null) list = new ParameterList(rem); }
/** * Returns the languages specified in the Content-Language header of this part, as defined by RFC * 1766. This method returns <code>null</code> if this header is not available. */ public String[] getContentLanguage() throws MessagingException { String header = getHeader(CONTENT_LANGUAGE_NAME, null); if (header != null) { HeaderTokenizer ht = new HeaderTokenizer(header, HeaderTokenizer.MIME); ArrayList acc = new ArrayList(); for (boolean done = false; !done; ) { HeaderTokenizer.Token token = ht.next(); switch (token.getType()) { case HeaderTokenizer.Token.EOF: done = true; break; case HeaderTokenizer.Token.ATOM: acc.add(token.getValue()); break; } } if (acc.size() > 0) { String[] languages = new String[acc.size()]; acc.toArray(languages); return languages; } } return null; }