Frun1na opened a new issue, #6771:
URL: https://github.com/apache/rocketmq-dashboard/issues/6771

   ### Before Creating the Bug Report
   
   - [x] I have searched the [open 
issues](https://github.com/apache/rocketmq-dashboard/issues) of this repository 
and believe that this is not a duplicate.
   - [x] This is a defect in RocketMQ Studio, not a usage question and not a 
defect in another Apache RocketMQ repository.
   - [x] I can reproduce this on the current `rocketmq-studio` branch, or I 
have stated the exact version I am running below.
   
   ### Studio Version
   
   ```
   branch: rocketmq-studio
   git commit id: a92c2314
   deployed as: reproduced by a unit test against that commit
   ```
   
   ### Runtime Environment
   
   ```
   OS: Ubuntu on WSL2 (test host)
   MySQL: not applicable — the defect is in the email subject composition, no 
database involved
   browser: not applicable — backend-only path
   ```
   
   ### Connected RocketMQ Cluster
   
   ```
   not applicable — reproduced with a stubbed alert and a stubbed mail sender 
in a unit test
   ```
   
   ### Describe the Bug
   
   `NotificationOutboxService.sendEmail` builds the message subject from the 
alert title
   
(`server/src/main/java/org/apache/rocketmq/studio/ops/alert/NotificationOutboxService.java:494`):
   
   ```java
   message.setSubject("[RocketMQ Studio] " + alert.getTitle());
   ```
   
   The title is the rule's name verbatim: `NativeAlertProcessor.java:197` sets
   `.title(rule.getName())`. Nothing keeps that name to one line — 
`AlertRuleRequestDTO.name`
   carries only `@NotBlank` — so `POST /api/alert-rules` (and with it the AI 
tool and the rule
   import) accepts a name such as `High lag\nBcc: [email protected]`. A mail 
subject is a
   single header line, so the break is written into the header as it stands: 
with the mail
   version the server ships (angus-mail, `MimeMessage.setSubject(subject, 
"UTF-8")` +
   `writeTo`) the raw message contains
   
   ```
   Subject: [RocketMQ Studio] High lag
    Bcc: [email protected]
   ```
   
   The rest of the rule name becomes a folded continuation of the header 
instead of subject
   text, so the delivered subject is not a line of text the operator wrote.
   
   The console's single-line rule-name input cannot type a line break, but the 
REST contract
   (channels `dingtalk|sms|email`, the AI tool `rmq.alert.create`, the transfer 
import) can.
   
   ### Steps to Reproduce
   
   1. Create an alert rule whose name contains a line break, over the REST 
contract:
      `POST /api/alert-rules` with `"name": "High lag\nBcc: 
[email protected]"`,
      `"metric": "consumer.lag.total"`, `"operator": ">"`, `"threshold": 1`,
      `"instanceId": "<an instance>"`, `"channels": ["email"]`.
   2. Configure email recipients under Settings, then let the rule fire (or run 
the test below).
   3. Read the subject handed to the mail transport; the new unit test
      
`NotificationOutboxServiceTest.emailSubjectStaysOnOneLineForAMultiLineAlertTitleTest`
      records `subject=[RocketMQ Studio] High lag` + a line break + `Bcc: 
[email protected]`.
   
   ### What Did You Expect to See?
   
   A single-line subject, e.g. `[RocketMQ Studio] High lag Bcc: 
[email protected]` — the
   line break collapsed, the same way `AlertService.sanitizeCommentText` keeps 
an exported rule
   comment on one line.
   
   ### What Did You See Instead?
   
   The subject passed to the mail sender still contains the line break, and 
JavaMail writes the
   remainder of the name as a folded continuation header line
   (`Subject: …\r\n Bcc: …`). Mail clients then show only the first line of the 
name, and the
   delivered subject is not the text the operator stored.
   
   ### Additional Context
   
   Reproduced with the mail library the server ships, without a mail server: a 
standalone
   `MimeMessage` (`jakarta.mail` 2.1.5 / angus-mail 2.0.5) does not reject the 
value at
   `setSubject` and emits `Subject: [RocketMQ Studio] Line1\r\n Bcc: 
[email protected]` on
   `writeTo`. A fix with a regression test follows in a pull request.
   
   ### Are You Willing to Submit a Pull Request?
   
   - [x] Yes, I am willing to submit a pull request.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to