diff --git a/src/main/java/co/cfly/email/impl/util/MailUtility.java b/src/main/java/co/cfly/email/impl/util/MailUtility.java index 3fa2690..cd4b544 100644 --- a/src/main/java/co/cfly/email/impl/util/MailUtility.java +++ b/src/main/java/co/cfly/email/impl/util/MailUtility.java @@ -18,6 +18,7 @@ import java.util.Enumeration; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.Properties; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -290,8 +291,9 @@ public static String decodeString(String value) { /** * Determines the content type of the part, or empty if it cannot determine */ + @SuppressWarnings("SwitchStatementWithTooFewBranches") public static Charset determineCharset(Part part, Charset defaultValue) throws MessagingException { - return Arrays.stream(part.getHeader("Content-Type")).findFirst().map(value -> { + return Optional.ofNullable(part.getHeader("Content-Type")).flatMap(headers -> Arrays.stream(headers).findFirst()).map(value -> { Matcher matcher = CHARSET_EXTRACT.matcher(value); if (matcher.find()) { String charsetName = matcher.group(1).trim().toUpperCase(); diff --git a/src/test/java/co/cfly/email/MailUtilityTest.java b/src/test/java/co/cfly/email/MailUtilityTest.java index 777532a..9bb9fc8 100644 --- a/src/test/java/co/cfly/email/MailUtilityTest.java +++ b/src/test/java/co/cfly/email/MailUtilityTest.java @@ -32,6 +32,12 @@ public void determineCharset() throws MessagingException { Assert.assertEquals(StandardCharsets.UTF_8, MailUtility.determineCharset(part, StandardCharsets.UTF_8)); } + @Test + public void determineCharsetNoContentType() throws MessagingException { + MimeBodyPart part = new MimeBodyPart(); + Assert.assertEquals(StandardCharsets.UTF_8, MailUtility.determineCharset(part, StandardCharsets.UTF_8)); + } + @Test public void determineCharsetQuoted() throws MessagingException { MimeBodyPart part = new MimeBodyPart();