Skip to content

Commit 775685c

Browse files
committed
Revert originalId / originalSentDate, as it doesn't make sense and makes things significantly more difficult to understand
1 parent 00ee020 commit 775685c

File tree

10 files changed

+31
-66
lines changed

10 files changed

+31
-66
lines changed

modules/core-module/src/main/java/org/simplejavamail/api/email/Email.java

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,6 @@ public class Email implements Serializable {
196196
@Nullable
197197
private final Date sentDate;
198198

199-
/**
200-
* @see EmailPopulatingBuilder#getOriginalSentDate()
201-
*/
202-
@Nullable
203-
private final Date originalSentDate;
204-
205199
/**
206200
* Simply transfers everything from {@link EmailPopulatingBuilder} to this Email instance.
207201
*
@@ -247,7 +241,6 @@ public Email(@NotNull final EmailPopulatingBuilder builder) {
247241
originalSmimeDetails = builder.getOriginalSmimeDetails();
248242

249243
sentDate = builder.getSentDate();
250-
originalSentDate = builder.getOriginalSentDate();
251244

252245
x509CertificateForSmimeEncryption = builder.getX509CertificateForSmimeEncryption();
253246
pkcs12ConfigForSmimeSigning = builder.getPkcs12ConfigForSmimeSigning();
@@ -326,19 +319,15 @@ public boolean equals(final Object o) {
326319
@Override
327320
public String toString() {
328321
String s = "Email{" +
329-
"\n\tid=" + id;
330-
if (originalSentDate != null) {
331-
s += "\n\toriginalSentDate=" + originalSentDate;
332-
}
333-
s += "\n\tsentDate=" + sentDate +
322+
"\n\tid=" + id + ("\n\tsentDate=" + sentDate +
334323
"\n\tfromRecipient=" + fromRecipient +
335324
",\n\treplyToRecipient=" + replyToRecipient +
336325
",\n\tbounceToRecipient=" + bounceToRecipient +
337326
",\n\ttext='" + text + '\'' +
338327
",\n\ttextHTML='" + textHTML + '\'' +
339328
",\n\ttextCalendar='" + textCalendar + '\'' +
340329
",\n\tsubject='" + subject + '\'' +
341-
",\n\trecipients=" + recipients;
330+
",\n\trecipients=" + recipients);
342331
if (!MiscUtil.valueNullOrEmpty(dkimSigningDomain)) {
343332
s += ",\n\tapplyDKIMSignature=" + true +
344333
",\n\t\tdkimSelector=" + dkimSelector +
@@ -612,12 +601,4 @@ public OriginalSmimeDetails getOriginalSmimeDetails() {
612601
public Date getSentDate() {
613602
return sentDate;
614603
}
615-
616-
/**
617-
* @see EmailPopulatingBuilder#getOriginalSentDate()
618-
*/
619-
@Nullable
620-
public Date getOriginalSentDate() {
621-
return originalSentDate;
622-
}
623604
}

modules/core-module/src/main/java/org/simplejavamail/api/email/EmailPopulatingBuilder.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public interface EmailPopulatingBuilder {
3838
/**
3939
* Sets optional ID to a fixed value, which is otherwise generated by the underlying JavaMail framework when sending the email.
4040
* <p>
41-
* <strong>Note 1:</strong> Note that ID can only ever be filled by end-users for sending an email. This library will never fill this field when converting a MimeMessage.
41+
* <strong>Note 1:</strong> ID is user-controlled. Only when converting an email, Simple Java Mail might fill the sent-date.
4242
* <br>
4343
* <strong>Note 2:</strong> The id-format should be conform <a href="https://tools.ietf.org/html/rfc5322#section-3.6.4">rfc5322#section-3.6.4</a>
4444
*
@@ -1179,7 +1179,7 @@ EmailPopulatingBuilder signWithDomainKey(@NotNull InputStream dkimPrivateKeyInpu
11791179
* When the an email is sent it is converted to a MimeMessage at which time the sent-date is filled with the current date. With this method
11801180
* this can be fixed to a date of choice.
11811181
* <p>
1182-
* Note that the sent date is never filled by Simple Java Mail, for example when converting from an Outlook or MimeMessage to Email.
1182+
* <strong>Note:</strong> the sent date is user-controlled. Only when converting an email, Simple Java Mail might fill the sent-date.
11831183
*
11841184
* @param sentDate The date to use as sent date.
11851185
*/
@@ -1489,10 +1489,4 @@ EmailPopulatingBuilder signWithDomainKey(@NotNull InputStream dkimPrivateKeyInpu
14891489
*/
14901490
@Nullable
14911491
Date getSentDate();
1492-
1493-
/**
1494-
* Contains the original sent-date when converting an existing message to Email. Not used when creating new mails.
1495-
*/
1496-
@Nullable
1497-
Date getOriginalSentDate();
14981492
}

modules/core-module/src/main/java/org/simplejavamail/api/email/EqualsHelper.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,22 @@
99
/**
1010
* Util class to get rid of some boilerplate code in the core classes. The equals code was needed to analyze junit test errors.
1111
* <p>
12-
* Initial equals code generated by IntelliJ, expanded to manually compare objects that don't override {@link Object#equals(Object)} (Recipient and DataSource
13-
* implementations).
12+
* Initial equals code generated by IntelliJ, expanded to manually compare objects that don't override {@link Object#equals(Object)} (Recipient and DataSource implementations).
1413
*/
1514
@SuppressWarnings("SimplifiableIfStatement")
16-
final class EqualsHelper {
15+
public final class EqualsHelper {
1716

1817
@SuppressWarnings("WeakerAccess")
1918
public static boolean equalsEmail(final Email email1, final Email email2) {
2019
if (email1.getFromRecipient() != null ? !isEqualRecipient(email1.getFromRecipient(), email2.getFromRecipient()) : email2.getFromRecipient() != null) {
2120
return false;
2221
}
22+
if (email1.getId() != null ? !email1.getId().equals(email2.getId()) : email2.getId() != null) {
23+
return false;
24+
}
25+
if (email1.getSentDate() != null ? !email1.getSentDate().equals(email2.getSentDate()) : email2.getSentDate() != null) {
26+
return false;
27+
}
2328
if (email1.getReplyToRecipient() != null ? !isEqualRecipient(email1.getReplyToRecipient(), email2.getReplyToRecipient()) :
2429
email2.getReplyToRecipient() != null) {
2530
return false;

modules/simple-java-mail/src/main/java/org/simplejavamail/converter/EmailConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ private static EmailPopulatingBuilder buildEmailFromMimeMessage(@NotNull final E
582582
checkNonEmptyArgument(builder, "emailBuilder");
583583
checkNonEmptyArgument(parsed, "parsedMimeMessageComponents");
584584
if (parsed.getSentDate() != null) {
585-
((InternalEmailPopulatingBuilder) builder).withOriginalSentDate(parsed.getSentDate());
585+
builder.fixingSentDate(parsed.getSentDate());
586586
}
587587
if (parsed.getFromAddress() != null) {
588588
builder.from(parsed.getFromAddress().getPersonal(), parsed.getFromAddress().getAddress());

modules/simple-java-mail/src/main/java/org/simplejavamail/email/internal/EmailPopulatingBuilderImpl.java

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,6 @@ public class EmailPopulatingBuilderImpl implements InternalEmailPopulatingBuilde
244244
@Nullable
245245
private Date sentDate;
246246

247-
/**
248-
* @see EmailPopulatingBuilder#getOriginalSentDate()
249-
*/
250-
@Nullable
251-
private Date originalSentDate;
252-
253247
/**
254248
* @see EmailStartingBuilder#startingBlank()
255249
*/
@@ -1736,16 +1730,6 @@ public EmailPopulatingBuilder fixingSentDate(@NotNull final Date sentDate) {
17361730
return this;
17371731
}
17381732

1739-
/**
1740-
* @see EmailPopulatingBuilder#getOriginalSentDate()
1741-
*/
1742-
@Override
1743-
@NotNull
1744-
public InternalEmailPopulatingBuilder withOriginalSentDate(@NotNull final Date originalSentDate) {
1745-
this.originalSentDate = originalSentDate;
1746-
return this;
1747-
}
1748-
17491733
/**
17501734
* @see EmailPopulatingBuilder#notMergingSingleSMIMESignedAttachment()
17511735
*/
@@ -2175,13 +2159,4 @@ public X509Certificate getX509CertificateForSmimeEncryption() {
21752159
public Date getSentDate() {
21762160
return sentDate;
21772161
}
2178-
2179-
/**
2180-
* @see EmailPopulatingBuilder#getOriginalSentDate()
2181-
*/
2182-
@Override
2183-
@Nullable
2184-
public Date getOriginalSentDate() {
2185-
return originalSentDate;
2186-
}
21872162
}

modules/simple-java-mail/src/main/java/org/simplejavamail/email/internal/EmailStartingBuilderImpl.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,6 @@ public EmailPopulatingBuilder copying(@NotNull final Email email) {
208208
builder.withEmbeddedImages(email.getEmbeddedImages());
209209
builder.withAttachments(email.getAttachments());
210210
((InternalEmailPopulatingBuilder) builder).withHeaders(email.getHeaders(), true);
211-
if (email.getOriginalSentDate() != null) {
212-
((InternalEmailPopulatingBuilder) builder).withOriginalSentDate(email.getOriginalSentDate());
213-
}
214211
if (email.getSentDate() != null) {
215212
builder.fixingSentDate(email.getSentDate());
216213
}

modules/simple-java-mail/src/main/java/org/simplejavamail/email/internal/InternalEmailPopulatingBuilder.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import org.jetbrains.annotations.NotNull;
99
import org.jetbrains.annotations.Nullable;
1010
import javax.mail.internet.MimeMessage;
11-
import java.util.Date;
1211
import java.util.List;
1312
import java.util.Map;
1413

@@ -22,5 +21,4 @@ public interface InternalEmailPopulatingBuilder extends EmailPopulatingBuilder
2221
@NotNull InternalEmailPopulatingBuilder withDecryptedAttachments(List<AttachmentResource> decryptedAttachments);
2322
@NotNull InternalEmailPopulatingBuilder withSmimeSignedEmail(@NotNull Email smimeSignedEmail);
2423
@NotNull InternalEmailPopulatingBuilder withOriginalSmimeDetails(@NotNull OriginalSmimeDetails originalSmimeDetails);
25-
@NotNull InternalEmailPopulatingBuilder withOriginalSentDate(@NotNull Date originalSentDate);
2624
}

modules/simple-java-mail/src/test/java/org/simplejavamail/internal/smimesupport/TestSmimeAttachments.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public void testSMIMEMessageFromOutlookMsgWithDefaultMergeBehavior() {
7272
EmailPopulatingBuilder fromEmlBuilder = EmailConverter.emlToEmailBuilder(new File(RESOURCE_FOLDER + "/SMIME (signed and clear text).eml"));
7373
Email emailExpectedFromEml = fromEmlBuilder
7474
.clearId() // set by Outlook when sending, so is missing in the saved .msg from before sending
75+
.clearSentDate() // same
7576
.clearHeaders() // same
7677
.clearReplyTo() // same
7778
.clearBounceTo() // same
@@ -156,6 +157,7 @@ public void testSMIMEMessageFromOutlookMsgWithNonMergingBehavior() {
156157
EmailPopulatingBuilder fromEmlBuilder = EmailConverter.emlToEmailBuilder(new File(RESOURCE_FOLDER + "/SMIME (signed and clear text).eml"));
157158
Email emailExpectedFromEml = fromEmlBuilder
158159
.clearId() // set by Outlook when sending, so is missing in the saved .msg from before sending
160+
.clearSentDate() // same
159161
.clearHeaders() // same
160162
.clearReplyTo() // same
161163
.clearBounceTo() // same

modules/simple-java-mail/src/test/java/org/simplejavamail/mailer/MailerLiveTest.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,19 @@ private Email assertSendingEmail(final EmailPopulatingBuilder originalEmailPopul
253253
if (!fixedSentDate) {
254254
GregorianCalendar receiveWindowStart = new GregorianCalendar();
255255
receiveWindowStart.add(Calendar.SECOND, -5);
256-
assertThat(receivedEmail.getOriginalSentDate()).isBetween(receiveWindowStart.getTime(), new Date());
256+
assertThat(receivedEmail.getSentDate()).isBetween(receiveWindowStart.getTime(), new Date());
257257
} else {
258-
assertThat(receivedEmail.getOriginalSentDate()).isEqualTo(CUSTOM_SENT_DATE);
258+
assertThat(receivedEmail.getSentDate()).isEqualTo(CUSTOM_SENT_DATE);
259+
}
260+
261+
// ID will always be generated when sending: if set to a specific value, just assume the generated one
262+
if (originalEmailPopulatingBuilder.getId() == null) {
263+
originalEmailPopulatingBuilder.fixingMessageId(receivedEmail.getId());
264+
}
265+
266+
// sent-date will always be generated when sending: if not set to a specific value, just assume the generated one
267+
if (originalEmailPopulatingBuilder.getSentDate() == null) {
268+
originalEmailPopulatingBuilder.fixingSentDate(assumeNonNull(receivedEmail.getSentDate()));
259269
}
260270

261271
// hack: it seems Wiser automatically defaults replyTo address to the From address if left empty

modules/simple-java-mail/src/test/java/org/simplejavamail/mailer/MailerTest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323
import java.io.ByteArrayInputStream;
2424
import java.io.File;
2525
import java.io.IOException;
26+
import java.util.GregorianCalendar;
2627
import java.util.Properties;
2728
import java.util.UUID;
2829

2930
import static demo.ResourceFolderHelper.determineResourceFolder;
31+
import static java.util.Calendar.APRIL;
3032
import static javax.xml.bind.DatatypeConverter.parseBase64Binary;
3133
import static org.assertj.core.api.Assertions.assertThat;
3234
import static org.mockito.ArgumentMatchers.any;
@@ -314,12 +316,13 @@ public void testParser()
314316
// let's try producing and then consuming a MimeMessage ->
315317
// (bounce recipient is not part of the Mimemessage but the Envelope and is not received back on the MimeMessage
316318
emailPopulatingBuilderNormal.clearBounceTo();
319+
emailPopulatingBuilderNormal.fixingSentDate(new GregorianCalendar(2011, APRIL, 1, 3, 51).getTime()); // always generated when producing mime message
317320
final Email emailNormal = emailPopulatingBuilderNormal.buildEmail();
318321
final MimeMessage mimeMessage = EmailConverter.emailToMimeMessage(emailNormal);
319322
final Email emailFromMimeMessage = EmailConverter.mimeMessageToEmail(mimeMessage);
320323

321324
TestDataHelper.fixDresscodeAttachment(emailFromMimeMessage);
322-
325+
323326
assertThat(emailFromMimeMessage).isEqualTo(emailNormal);
324327
}
325328

0 commit comments

Comments
 (0)