/** * Extracts encoding from a given content type. * * @param contentType content type. * @param defaultEncoding Default encoding to be used if extract returns {@code null}. * If defaultEncoding is {@code null}, {@link JoddCore#encoding} will be used. * @return Encoding from the content type. * @see #extractEncoding(String) */ public static String extractEncoding(final String contentType, String defaultEncoding) { String encoding = extractEncoding(contentType); if (encoding == null) { if (defaultEncoding == null) { defaultEncoding = JoddCore.encoding; } encoding = defaultEncoding; } return encoding; }
/** * Adds String content as either {@link EmailAttachment} or as {@link EmailMessage}. * * @param part {@link Part} * @param content Content as {@link String} * @throws MessagingException if there is a failure. * @throws UnsupportedEncodingException if the named charset is not supported. * @see #message(String, String, String) */ private void addStringContent(final Part part, final String content) throws MessagingException, UnsupportedEncodingException { final String contentType = part.getContentType(); final String encoding = EmailUtil.extractEncoding(contentType, StringPool.US_ASCII); final String disposition = part.getDisposition(); if (disposition != null && disposition.equalsIgnoreCase(Part.ATTACHMENT)) { addAttachment(part, content.getBytes(encoding)); } else { final String mimeType = EmailUtil.extractMimeType(contentType); message(content, mimeType, encoding); } }
@Test void testExtractContentType() { String contentType = "multipart/mixed;"; assertEquals("multipart/mixed", EmailUtil.extractMimeType(contentType)); assertNull(EmailUtil.extractEncoding(contentType)); contentType = "multipart/mixed; boundary=-----"; assertEquals("multipart/mixed", EmailUtil.extractMimeType(contentType)); assertNull(EmailUtil.extractEncoding(contentType)); contentType = "text/html;\n\tcharset=\"us-ascii\""; assertEquals(MimeTypes.MIME_TEXT_HTML, EmailUtil.extractMimeType(contentType)); assertEquals(StringPool.US_ASCII.toLowerCase(), EmailUtil.extractEncoding(contentType)); contentType = "TEXT/PLAIN; charset=US-ASCII; name=example.eml"; assertEquals(MimeTypes.MIME_TEXT_PLAIN.toUpperCase(), EmailUtil.extractMimeType(contentType)); assertEquals(StringPool.US_ASCII, EmailUtil.extractEncoding(contentType)); }
/** * Extracts encoding from a given content type. * * @param contentType content type. * @param defaultEncoding Default encoding to be used if extract returns {@code null}. * If defaultEncoding is {@code null}, {@link JoddCore#encoding} will be used. * @return Encoding from the content type. * @see #extractEncoding(String) */ public static String extractEncoding(final String contentType, String defaultEncoding) { String encoding = extractEncoding(contentType); if (encoding == null) { if (defaultEncoding == null) { defaultEncoding = JoddCore.encoding; } encoding = defaultEncoding; } return encoding; }
/** * Adds String content as either {@link EmailAttachment} or as {@link EmailMessage}. * * @param part {@link Part} * @param content Content as {@link String} * @throws MessagingException if there is a failure. * @throws UnsupportedEncodingException if the named charset is not supported. * @see #message(String, String, String) */ private void addStringContent(final Part part, final String content) throws MessagingException, UnsupportedEncodingException { final String contentType = part.getContentType(); final String encoding = EmailUtil.extractEncoding(contentType, StringPool.US_ASCII); final String disposition = part.getDisposition(); if (disposition != null && disposition.equalsIgnoreCase(Part.ATTACHMENT)) { addAttachment(part, content.getBytes(encoding)); } else { final String mimeType = EmailUtil.extractMimeType(contentType); message(content, mimeType, encoding); } }