fix: build CID attachment URLs against the API route and base path

replaceCidReferences rewrote cid: references to /email/:id/attachment/:file,
which matches no route: attachments are served from the API server, mounted
at ${basePath}/api. When MailDev sits under a subpath the prefix was missing
as well, which is the setup described in #439.

Emit ${basePath}/api/email/:id/attachment/:file, root-relative by default, and
thread the API server's basePath through getEmailHtml. baseUrl still prefixes
//host for a caller that passes it.

On the current code this does not change what the web UI shows for a typical
message: mailparser already inlines related parts as data: URIs, and a cid:
that survives parsing is one that matches no attachment. replaceCidReferences
is exported from @maildev/smtp, though, so the URL it builds should resolve.

Refs #439
This commit is contained in:
dualfroz committed 2026-09-13 15:31:28 +02:00
1 parent 1ce2ff856b
commit 8dceaec54a
6 files changed
+53 -13

No files matched your search

+1 -1
View File
@@ -258,7 +258,7 @@ export class SMTPServer extends EventEmitter {
// Replace CID references with actual URLs
if (email.attachments && email.attachments.length > 0) {
html = replaceCidReferences(html, id, email.attachments, options.baseUrl)
html = replaceCidReferences(html, id, email.attachments, options.baseUrl, options.basePath)
}
return html