4
4
import org .simplejavamail .converter .internal .mimemessage .MimeMessageParser ;
5
5
import org .simplejavamail .converter .internal .msgparser .OutlookMessageParser ;
6
6
import org .simplejavamail .email .Email ;
7
+ import org .simplejavamail .email .Recipient ;
7
8
import org .simplejavamail .internal .util .MiscUtil ;
8
9
import org .simplejavamail .outlookmessageparser .model .OutlookFileAttachment ;
9
10
import org .simplejavamail .outlookmessageparser .model .OutlookMessage ;
14
15
import javax .mail .Message ;
15
16
import javax .mail .MessagingException ;
16
17
import javax .mail .Session ;
18
+ import javax .mail .internet .AddressException ;
17
19
import javax .mail .internet .InternetAddress ;
18
20
import javax .mail .internet .MimeMessage ;
19
21
import java .io .ByteArrayInputStream ;
@@ -240,7 +242,9 @@ private static void fillEmailFromMimeMessage(@Nonnull final Email email, @Nonnul
240
242
final InternetAddress replyTo = parser .getReplyTo ();
241
243
email .setReplyToAddress (replyTo .getPersonal (), replyTo .getAddress ());
242
244
for (final Map .Entry <String , Object > header : parser .getHeaders ().entrySet ()) {
243
- email .addHeader (header .getKey (), header .getValue ());
245
+ if (!fillPredefinedHeader (email , header )) {
246
+ email .addHeader (header .getKey (), header .getValue ());
247
+ }
244
248
}
245
249
for (final InternetAddress to : parser .getTo ()) {
246
250
email .addRecipient (to .getPersonal (), to .getAddress (), Message .RecipientType .TO );
@@ -263,7 +267,22 @@ private static void fillEmailFromMimeMessage(@Nonnull final Email email, @Nonnul
263
267
email .addAttachment (extractCID (attachment .getKey ()), attachment .getValue ());
264
268
}
265
269
}
266
-
270
+
271
+ private static boolean fillPredefinedHeader (@ Nonnull Email email , @ Nonnull Map .Entry <String , Object > header ) throws AddressException {
272
+ if (header .getKey ().equals ("Disposition-Notification-To" )) {
273
+ email .setUseDispositionNotificationTo (true );
274
+ InternetAddress internetAddress = new InternetAddress ((String ) header .getValue ());
275
+ email .setDispositionNotificationTo (new Recipient (internetAddress .getPersonal (), internetAddress .getAddress (), null ));
276
+ return true ;
277
+ } else if (header .getKey ().equals ("Return-Receipt-To" )) {
278
+ email .setUseReturnReceiptTo (true );
279
+ InternetAddress internetAddress = new InternetAddress ((String ) header .getValue ());
280
+ email .setReturnReceiptTo (new Recipient (internetAddress .getPersonal (), internetAddress .getAddress (), null ));
281
+ return true ;
282
+ }
283
+ return false ;
284
+ }
285
+
267
286
private static void fillEmailFromOutlookMessage (@ Nonnull final Email email , @ Nonnull final OutlookMessage outlookMessage ) {
268
287
checkNonEmptyArgument (email , "email" );
269
288
checkNonEmptyArgument (outlookMessage , "outlookMessage" );
0 commit comments