This is an automated email from the ASF dual-hosted git repository. chibenwa pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 956f9493a278fb549d5c9eaddd33602eae23c90f Author: Benoit TELLIER <[email protected]> AuthorDate: Fri Sep 18 13:02:01 2026 +0200 JAMES-4228 Advertize invalid recipients --- .../rfc8621/contract/EmailSubmissionSetValidateRcptContract.scala | 6 ++++-- .../src/main/scala/org/apache/james/jmap/core/SetError.scala | 7 ++++--- .../james/jmap/method/ValidRcptEmailSubmissionSetValidation.scala | 1 + 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetValidateRcptContract.scala b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetValidateRcptContract.scala index cee4a7db8b..7ed6dc58eb 100644 --- a/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetValidateRcptContract.scala +++ b/server/protocols/jmap-rfc-8621-integration-tests/jmap-rfc-8621-integration-tests-common/src/main/scala/org/apache/james/jmap/rfc8621/contract/EmailSubmissionSetValidateRcptContract.scala @@ -119,7 +119,8 @@ trait EmailSubmissionSetValidateRcptContract { | "k1490": { | "type": "invalidRecipients", | "description": "Invalid recipients: unknown@${DOMAIN.asString}", - | "properties": ["envelope.rcptTo"] + | "properties": ["envelope.rcptTo"], + | "invalidRecipients": ["unknown@${DOMAIN.asString}"] | } |}""".stripMargin) @@ -131,7 +132,8 @@ trait EmailSubmissionSetValidateRcptContract { | "k1490": { | "type": "invalidRecipients", | "description": "Invalid recipients: unknown@${DOMAIN.asString}", - | "properties": ["envelope.rcptTo"] + | "properties": ["envelope.rcptTo"], + | "invalidRecipients": ["unknown@${DOMAIN.asString}"] | } |}""".stripMargin) diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/SetError.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/SetError.scala index eaaec60e3f..df86178491 100644 --- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/SetError.scala +++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/core/SetError.scala @@ -75,8 +75,9 @@ object SetError { SetError(SetError.tooLargeValue, description, None) } - def invalidRecipients(description: SetErrorDescription, properties: Option[Properties] = None): SetError = - SetError(SetError.invalidRecipientsValue, description, properties) + def invalidRecipients(description: SetErrorDescription, invalidRecipients: List[String], properties: Option[Properties] = None): SetError = + SetError(SetError.invalidRecipientsValue, description, properties, Some(invalidRecipients)) } -case class SetError(`type`: SetErrorType, description: SetErrorDescription, properties: Option[Properties]) +case class SetError(`type`: SetErrorType, description: SetErrorDescription, properties: Option[Properties], + invalidRecipients: Option[List[String]] = None) diff --git a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/ValidRcptEmailSubmissionSetValidation.scala b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/ValidRcptEmailSubmissionSetValidation.scala index a56629978e..b5f53fff08 100644 --- a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/ValidRcptEmailSubmissionSetValidation.scala +++ b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/ValidRcptEmailSubmissionSetValidation.scala @@ -59,6 +59,7 @@ class ValidRcptEmailSubmissionSetValidation(recipientValidator: RecipientValidat case Seq() => None case invalidRecipients => Some(SetError.invalidRecipients( SetErrorDescription(s"Invalid recipients: ${invalidRecipients.map(_.asString()).mkString(", ")}"), + invalidRecipients.map(_.asString()).toList, Some(Properties("envelope.rcptTo")))) } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
