< prev index next >

email/src/main/java/org/openjdk/skara/email/Email.java

Print this page
@@ -85,19 +85,20 @@
          var redundantTimeZonePatternMatcher = redundantTimeZonePattern.matcher(unparsedDate);
          if (redundantTimeZonePatternMatcher.matches()) {
              unparsedDate = redundantTimeZonePatternMatcher.group(1);
          }
          var date = ZonedDateTime.parse(unparsedDate, DateTimeFormatter.RFC_1123_DATE_TIME);
-         var subject = message.headers.get("Subject");
-         var author = EmailAddress.parse(message.headers.get("From"));
+         var subject = MimeText.decode(message.headers.get("Subject"));
+         var author = EmailAddress.parse(MimeText.decode(message.headers.get("From")));
          var sender = author;
          if (message.headers.containsKey("Sender")) {
-             sender = EmailAddress.parse(message.headers.get("Sender"));
+             sender = EmailAddress.parse(MimeText.decode(message.headers.get("Sender")));
          }
          List<EmailAddress> recipients;
          if (message.headers.containsKey("To")) {
              recipients = Arrays.stream(message.headers.get("To").split(","))
+                                .map(MimeText::decode)
                                 .map(EmailAddress::parse)
                                 .collect(Collectors.toList());
          } else {
              recipients = List.of();
          }

@@ -108,13 +109,14 @@
                                               .filter(entry -> !entry.getKey().equalsIgnoreCase("Date"))
                                               .filter(entry -> !entry.getKey().equalsIgnoreCase("Subject"))
                                               .filter(entry -> !entry.getKey().equalsIgnoreCase("From"))
                                               .filter(entry -> !entry.getKey().equalsIgnoreCase("Sender"))
                                               .filter(entry -> !entry.getKey().equalsIgnoreCase("To"))
-                                              .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+                                              .collect(Collectors.toMap(Map.Entry::getKey,
+                                                                        entry -> MimeText.decode(entry.getValue())));
  
-         return new Email(id, date, recipients, author, sender, subject, message.body, filteredHeaders);
+         return new Email(id, date, recipients, author, sender, subject, MimeText.decode(message.body), filteredHeaders);
      }
  
      public static EmailBuilder create(EmailAddress author, String subject, String body) {
          return new EmailBuilder(author, subject, body);
      }
< prev index next >