Skip to content

Commit 8c1827a

Browse files
committed
#452: also perform the completeness check leniently in case of .disableAllClientValidation(true)
1 parent 5ce7e0e commit 8c1827a

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

modules/simple-java-mail/src/main/java/org/simplejavamail/mailer/MailerHelper.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,11 @@ public static boolean validateLenient(@NotNull final Email email)
8686
public static boolean validateLenient(@NotNull final Email email, @Nullable final EmailValidator emailValidator)
8787
throws MailException {
8888
LOGGER.debug("validating email...");
89-
MailerHelper.validateCompleteness(email);
89+
try {
90+
MailerHelper.validateCompleteness(email);
91+
} catch (MailCompletenessException e) {
92+
LOGGER.warn("encountered (and ignored) missing field: {}", e.getMessage());
93+
}
9094
try {
9195
MailerHelper.validateAddresses(email, emailValidator);
9296
} catch (MailInvalidAddressException e) {
@@ -194,8 +198,10 @@ public static void scanForInjectionAttacks(final @NotNull Email email) {
194198
scanForInjectionAttack(embeddedImage.getDataSource().getName(), "email.embeddedImage.datasource.name");
195199
scanForInjectionAttack(embeddedImage.getDescription(), "email.embeddedImage.description");
196200
}
197-
scanForInjectionAttack(email.getFromRecipient().getName(), "email.fromRecipient.name");
198-
scanForInjectionAttack(email.getFromRecipient().getAddress(), "email.fromRecipient.address");
201+
if (!valueNullOrEmpty(email.getFromRecipient())) {
202+
scanForInjectionAttack(email.getFromRecipient().getName(), "email.fromRecipient.name");
203+
scanForInjectionAttack(email.getFromRecipient().getAddress(), "email.fromRecipient.address");
204+
}
199205
if (!valueNullOrEmpty(email.getReplyToRecipient())) {
200206
scanForInjectionAttack(email.getReplyToRecipient().getName(), "email.replyToRecipient.name");
201207
scanForInjectionAttack(email.getReplyToRecipient().getAddress(), "email.replyToRecipient.address");

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

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,8 @@ public void validate() {
3434

3535
@Test
3636
public void validateLenient() {
37-
// missing fields should still fail
3837
val emailMissingFrom = newBuilder().clearFromRecipient().buildEmail();
39-
assertThatThrownBy(() -> MailerHelper.validateLenient(emailMissingFrom, JMail.strictValidator()))
40-
.isInstanceOf(MailCompletenessException.class)
41-
.hasMessageContaining("Email is not valid: missing sender.");
42-
43-
// but invalid address or suspicious fields should not
38+
assertThatNoException().isThrownBy(() -> MailerHelper.validateLenient(emailMissingFrom, JMail.strictValidator()));
4439
val emailInvalidFrom = newBuilder().from("invalid", "invalid").buildEmail();
4540
assertThat(MailerHelper.validateLenient(emailInvalidFrom)).isTrue();
4641
assertThatNoException().isThrownBy(() -> MailerHelper.validateLenient(emailInvalidFrom, JMail.strictValidator()));

0 commit comments

Comments
 (0)