1717
1818import javax .mail .MessagingException ;
1919import javax .mail .internet .MimeMessage ;
20+ import javax .mail .internet .MimeUtility ;
2021import java .io .IOException ;
2122import java .util .Properties ;
2223
24+ import static java .lang .String .format ;
2325import static javax .mail .Message .RecipientType .TO ;
2426import static org .assertj .core .api .Assertions .assertThat ;
2527import static org .assertj .core .data .MapEntry .entry ;
@@ -138,7 +140,7 @@ private Email assertSendingEmail(final EmailPopulatingBuilder originalEmailPopul
138140
139141 @ Test
140142 public void createMailSession_ReplyToMessage ()
141- throws IOException , MessagingException {
143+ throws MessagingException {
142144 // send initial mail
143145 mailer .sendMail (readOutlookMessage ("test-messages/HTML mail with replyto and attachment and embedded image.msg" ).buildEmail ());
144146 MimeMessage receivedMimeMessage = smtpServerRule .getOnlyMessage ();
@@ -170,7 +172,7 @@ public void createMailSession_ReplyToMessage()
170172
171173 @ Test
172174 public void createMailSession_ReplyToMessage_NotAll_AndCustomReferences ()
173- throws IOException , MessagingException {
175+ throws MessagingException {
174176 // send initial mail
175177 mailer .sendMail (readOutlookMessage ("test-messages/HTML mail with replyto and attachment and embedded image.msg" ).buildEmail ());
176178 MimeMessage receivedMimeMessage = smtpServerRule .getOnlyMessage ();
@@ -179,20 +181,42 @@ public void createMailSession_ReplyToMessage_NotAll_AndCustomReferences()
179181 // send reply to initial mail
180182 Email reply = EmailBuilder
181183 .replyingTo (assertSendingEmail (receivedEmailPopulatingBuilder , false ))
182- .withHeader ("References" , "dummy-references" )
183- 184+ .
from (
"Moo Shmoo" ,
"[email protected] " )
184185 .withPlainText ("This is the reply" )
185186 .buildEmail ();
186187
187188 // test received reply to initial mail
188189 mailer .sendMail (reply );
189- MimeMessage receivedMimeMessageReply1 =
smtpServerRule .
getOnlyMessage (
"[email protected] " );
190- Email receivedReply = mimeMessageToEmail (receivedMimeMessageReply1 );
190+ MimeMessage receivedMimeMessageReply =
smtpServerRule .
getOnlyMessage (
"[email protected] " );
191+ Email receivedReply = mimeMessageToEmail (receivedMimeMessageReply );
191192
192193 EmailAssert .assertThat (receivedReply ).hasSubject ("Re: hey" );
193194 EmailAssert .
assertThat (
receivedReply ).
hasOnlyRecipients (
new Recipient (
"lollypop-replyto" ,
"[email protected] " ,
TO ));
194195 assertThat (receivedReply .getHeaders ()).contains (entry ("In-Reply-To" , receivedEmailPopulatingBuilder .getId ()));
195- assertThat (receivedReply .getHeaders ()).contains (entry ("References" , "dummy-references" ));
196+ assertThat (receivedReply .getHeaders ()).contains (entry ("References" , receivedEmailPopulatingBuilder .getId ()));
197+
198+ EmailPopulatingBuilder receivedEmailReplyPopulatingBuilder = mimeMessageToEmailBuilder (receivedMimeMessageReply );
199+
200+ Email replyToReply = EmailBuilder
201+ .replyingTo (assertSendingEmail (receivedEmailReplyPopulatingBuilder , false ))
202+ .
from (
"Pappa Moo" ,
"[email protected] " )
203+ .withPlainText ("This is the reply to the reply" )
204+ .buildEmail ();
205+
206+ // test received reply to initial mail
207+ mailer .sendMail (replyToReply );
208+ MimeMessage receivedMimeMessageReplyToReply =
smtpServerRule .
getOnlyMessage (
"[email protected] " );
209+ Email receivedReplyToReply = mimeMessageToEmail (receivedMimeMessageReplyToReply );
210+
211+ EmailAssert .assertThat (receivedReplyToReply ).hasSubject ("Re: hey" );
212+ EmailAssert .
assertThat (
receivedReplyToReply ).
hasOnlyRecipients (
new Recipient (
"Moo Shmoo" ,
"[email protected] " ,
TO ));
213+ assertThat (receivedReplyToReply .getHeaders ()).contains (entry ("In-Reply-To" , receivedEmailReplyPopulatingBuilder .getId ()));
214+
215+ assertThat (receivedReplyToReply .getHeaders ()).contains (entry ("References" ,
216+ MimeUtility .fold ("References: " .length (), format ("%s\n %s" ,
217+ receivedEmailPopulatingBuilder .getId (),
218+ receivedEmailReplyPopulatingBuilder .getId ()))
219+ ));
196220 }
197221
198222 private void assertAttachmentMetadata (AttachmentResource embeddedImg , String mimeType , String filename ) {
0 commit comments