This is an automated email from the ASF dual-hosted git repository.
quantranhong1999 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 6b39077850 [FIX] Avoid 500 upon Mail repository download (#3064)
6b39077850 is described below
commit 6b39077850b06273f4091d499146c8a852ef7ab0
Author: Benoit TELLIER <[email protected]>
AuthorDate: Tue Jun 16 11:36:23 2026 +0200
[FIX] Avoid 500 upon Mail repository download (#3064)
---
.../webadmin/routes/MailRepositoriesRoutes.java | 27 +++++++++++-----------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
index c1a986c1ce..b8c83e5bb7 100644
---
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
+++
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/routes/MailRepositoriesRoutes.java
@@ -19,8 +19,8 @@
package org.apache.james.webadmin.routes;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.OutputStream;
import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
@@ -34,7 +34,6 @@ import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import jakarta.servlet.http.HttpServletResponse;
-import org.apache.commons.io.output.CountingOutputStream;
import org.apache.james.core.MailAddress;
import org.apache.james.mailrepository.api.MailKey;
import org.apache.james.mailrepository.api.MailRepository;
@@ -204,17 +203,19 @@ public class MailRepositoriesRoutes implements Routes {
response.raw()));
}
- private Object writeMimeMessage(MimeMessage mimeMessage,
HttpServletResponse rawResponse) throws MessagingException, IOException {
- rawResponse.setContentType(Constants.RFC822_CONTENT_TYPE);
- rawResponse.setHeader("Content-Length",
String.valueOf(computeExactSize(mimeMessage)));
- mimeMessage.writeTo(rawResponse.getOutputStream());
- return rawResponse;
- }
-
- private long computeExactSize(MimeMessage mimeMessage) throws IOException,
MessagingException {
- CountingOutputStream countingOutputStream = new
CountingOutputStream(OutputStream.nullOutputStream());
- mimeMessage.writeTo(countingOutputStream);
- return countingOutputStream.getByteCount();
+ private Object writeMimeMessage(MimeMessage mimeMessage,
HttpServletResponse rawResponse) {
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ mimeMessage.writeTo(buffer);
+
+ rawResponse.setContentType(Constants.RFC822_CONTENT_TYPE);
+ rawResponse.setHeader("Content-Length",
String.valueOf(buffer.size()));
+ buffer.writeTo(rawResponse.getOutputStream());
+ rawResponse.flushBuffer();
+ return rawResponse;
+ } catch (MessagingException | IOException e) {
+ throw internalServerError(e);
+ }
}
private MimeMessage getMailAsMimeMessage(MailRepositoryPath path, MailKey
mailKey) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]