This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git


The following commit(s) were added to refs/heads/master by this push:
     new 326b892ac1 JAMES-4013 Relay MDN/send
326b892ac1 is described below

commit 326b892ac1f51556084386195f9c47f6405557ef
Author: Benoit TELLIER <[email protected]>
AuthorDate: Tue Feb 27 14:23:37 2024 +0100

    JAMES-4013 Relay MDN/send
---
 .../scala/org/apache/james/jmap/method/MDNSendMethod.scala   | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MDNSendMethod.scala
 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MDNSendMethod.scala
index 40a8b71f3e..25adba64e9 100644
--- 
a/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MDNSendMethod.scala
+++ 
b/server/protocols/jmap-rfc-8621/src/main/scala/org/apache/james/jmap/method/MDNSendMethod.scala
@@ -31,7 +31,7 @@ import org.apache.james.jmap.json.MDNSerializer
 import org.apache.james.jmap.mail.MDN._
 import org.apache.james.jmap.mail.MDNSend.MDN_ALREADY_SENT_FLAG
 import org.apache.james.jmap.mail._
-import org.apache.james.jmap.method.EmailSubmissionSetMethod.LOGGER
+import org.apache.james.jmap.method.EmailSubmissionSetMethod.{LOGGER, 
MAIL_METADATA_USERNAME_ATTRIBUTE}
 import org.apache.james.jmap.routes.{ProcessingContext, SessionSupplier}
 import org.apache.james.lifecycle.api.{LifecycleUtil, Startable}
 import org.apache.james.mailbox.model.{FetchGroup, MessageResult}
@@ -48,6 +48,7 @@ import org.apache.james.queue.api.MailQueueFactory.SPOOL
 import org.apache.james.queue.api.{MailQueue, MailQueueFactory}
 import org.apache.james.server.core.MailImpl
 import org.apache.james.util.ReactorUtils
+import org.apache.mailet.{Attribute, AttributeValue}
 import play.api.libs.json.{JsError, JsObject, JsSuccess}
 import reactor.core.scala.publisher.{SFlux, SMono}
 
@@ -148,7 +149,7 @@ class MDNSendMethod @Inject()(serializer: MDNSerializer,
       mdnRelatedMessageResult <- retrieveRelatedMessageResult(session, 
requestEntry)
       mdnRelatedMessageResultAlready <- 
validateMDNNotAlreadySent(mdnRelatedMessageResult)
       messageRelated = parseAsMessage(mdnRelatedMessageResultAlready)
-      mailAndResponseAndId <- buildMailAndResponse(identity, 
session.getUser.asString(), requestEntry, messageRelated)
+      mailAndResponseAndId <- buildMailAndResponse(identity, 
session.getUser.asString(), requestEntry, messageRelated, session)
       _ <- Try(enqueue(mailAndResponseAndId._1)).toEither
     } yield {
       MDNSendCreateSuccess(
@@ -178,19 +179,19 @@ class MDNSendMethod @Inject()(serializer: MDNSerializer,
       scala.Right(relatedMessageResult)
     }
 
-  private def buildMailAndResponse(identity: Identity, sender: String, 
requestEntry: MDNSendCreateRequest, originalMessage: Message): 
Either[Throwable, (MailImpl, MDNSendCreateResponse)] =
+  private def buildMailAndResponse(identity: Identity, sender: String, 
requestEntry: MDNSendCreateRequest, originalMessage: Message, mailboxSession: 
MailboxSession): Either[Throwable, (MailImpl, MDNSendCreateResponse)] =
     for {
       mailRecipient <- getMailRecipient(originalMessage)
       mdnFinalRecipient <- getMDNFinalRecipient(requestEntry, identity)
       mdnOriginalRecipient = 
OriginalRecipient.builder().originalRecipient(Text.fromRawText(sender)).build()
       mdn = buildMDN(requestEntry, originalMessage, mdnFinalRecipient, 
mdnOriginalRecipient)
       subject = buildMessageSubject(requestEntry, originalMessage)
-      (mailImpl, mimeMessage) = buildMailAndMimeMessage(sender, mailRecipient, 
subject, mdn)
+      (mailImpl, mimeMessage) = buildMailAndMimeMessage(sender, mailRecipient, 
subject, mdn, mailboxSession)
     } yield {
       (mailImpl, buildMDNSendCreateResponse(requestEntry, mdn, mimeMessage))
     }
 
-  private def buildMailAndMimeMessage(sender: String, recipient: String, 
subject: String, mdn: MDN): (MailImpl, MimeMessage) = {
+  private def buildMailAndMimeMessage(sender: String, recipient: String, 
subject: String, mdn: MDN, mailboxSession: MailboxSession): (MailImpl, 
MimeMessage) = {
     val mimeMessage: MimeMessage = mdn.asMimeMessage()
     mimeMessage.setFrom(sender)
     mimeMessage.setRecipients(jakarta.mail.Message.RecipientType.TO, recipient)
@@ -202,6 +203,7 @@ class MDNSendMethod @Inject()(serializer: MDNSerializer,
       .sender(sender)
       .addRecipient(recipient)
       .mimeMessage(mimeMessage)
+      .addAttribute(new Attribute(MAIL_METADATA_USERNAME_ATTRIBUTE, 
AttributeValue.of(mailboxSession.getUser.asString())))
       .build()
     mailImpl -> mimeMessage
   }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to