17
17
18
18
import javax .mail .MessagingException ;
19
19
import javax .mail .internet .MimeMessage ;
20
+ import javax .mail .internet .MimeUtility ;
20
21
import java .io .IOException ;
21
22
import java .util .Properties ;
22
23
24
+ import static java .lang .String .format ;
23
25
import static javax .mail .Message .RecipientType .TO ;
24
26
import static org .assertj .core .api .Assertions .assertThat ;
25
27
import static org .assertj .core .data .MapEntry .entry ;
@@ -138,7 +140,7 @@ private Email assertSendingEmail(final EmailPopulatingBuilder originalEmailPopul
138
140
139
141
@ Test
140
142
public void createMailSession_ReplyToMessage ()
141
- throws IOException , MessagingException {
143
+ throws MessagingException {
142
144
// send initial mail
143
145
mailer .sendMail (readOutlookMessage ("test-messages/HTML mail with replyto and attachment and embedded image.msg" ).buildEmail ());
144
146
MimeMessage receivedMimeMessage = smtpServerRule .getOnlyMessage ();
@@ -170,7 +172,7 @@ public void createMailSession_ReplyToMessage()
170
172
171
173
@ Test
172
174
public void createMailSession_ReplyToMessage_NotAll_AndCustomReferences ()
173
- throws IOException , MessagingException {
175
+ throws MessagingException {
174
176
// send initial mail
175
177
mailer .sendMail (readOutlookMessage ("test-messages/HTML mail with replyto and attachment and embedded image.msg" ).buildEmail ());
176
178
MimeMessage receivedMimeMessage = smtpServerRule .getOnlyMessage ();
@@ -179,20 +181,42 @@ public void createMailSession_ReplyToMessage_NotAll_AndCustomReferences()
179
181
// send reply to initial mail
180
182
Email reply = EmailBuilder
181
183
.replyingTo (assertSendingEmail (receivedEmailPopulatingBuilder , false ))
182
- .withHeader ("References" , "dummy-references" )
183
- .from ("dummy@domain.com" )
184
+ .from ("Moo Shmoo" , "dummy@domain.com" )
184
185
.withPlainText ("This is the reply" )
185
186
.buildEmail ();
186
187
187
188
// test received reply to initial mail
188
189
mailer .sendMail (reply );
189
- MimeMessage receivedMimeMessageReply1 = smtpServerRule .getOnlyMessage ("lo.pop.replyto@somemail.com" );
190
- Email receivedReply = mimeMessageToEmail (receivedMimeMessageReply1 );
190
+ MimeMessage receivedMimeMessageReply = smtpServerRule .getOnlyMessage ("lo.pop.replyto@somemail.com" );
191
+ Email receivedReply = mimeMessageToEmail (receivedMimeMessageReply );
191
192
192
193
EmailAssert .assertThat (receivedReply ).hasSubject ("Re: hey" );
193
194
EmailAssert .assertThat (receivedReply ).hasOnlyRecipients (new Recipient ("lollypop-replyto" , "lo.pop.replyto@somemail.com" , TO ));
194
195
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" , "dummy@domain.com" )
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 ("dummy@domain.com" );
209
+ Email receivedReplyToReply = mimeMessageToEmail (receivedMimeMessageReplyToReply );
210
+
211
+ EmailAssert .assertThat (receivedReplyToReply ).hasSubject ("Re: hey" );
212
+ EmailAssert .assertThat (receivedReplyToReply ).hasOnlyRecipients (new Recipient ("Moo Shmoo" , "dummy@domain.com" , 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
+ ));
196
220
}
197
221
198
222
private void assertAttachmentMetadata (AttachmentResource embeddedImg , String mimeType , String filename ) {
0 commit comments