Markdown: HTML inside code blocks and inline code isn't escaped

Aperta Adatta ai principianti
#3,814 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@KishanKanejiya23 ci sta già lavorando.

Dal 28/10/2026.

  • #3823 di @KishanKanejiya23 — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
88/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
markdown, react, typescript
Ambito
frontend

Direzione di ricerca

Inizia da markdown.tsx e trova i renderer code e codespan; secondo l’issue, entrambi inseriscono testo senza eseguirne l’escape. Leggi i test esistenti del componente Markdown e aggiungi un caso per l’HTML nel codice delimitato da fence e nel codice inline. Il lavoro è completato quando entrambi vengono visualizzati come testo con escape, in linea con l’output atteso nell’issue.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

What versions are you using? (if relevant)

[email protected] (also on canary), [email protected], [email protected]

Describe the Bug

<Markdown> doesn't escape what's inside code blocks and inline code. If a fenced block or a code span contains HTML, the tags go into the email as real HTML, so a code sample showing <b>bold</b> comes out as bold text instead of the snippet.

The code and codespan renderers in markdown.tsx insert text as is, while marked's own renderers escape it.

What is affected (leave empty if unsure)

Markdown Component

Link to the code that reproduces this issue

The repro is short, so it's inline under To Reproduce. It only needs [email protected], [email protected] and [email protected].

To Reproduce

Save this as check.mjs and run it with node:

import { createElement as h } from 'react';
import { renderToStaticMarkup } from 'react-dom/server';
import { Markdown } from 'react-email';

const md = '```html\n<b>bold</b> & <i>x</i>\n```\n\nInline: `<br>`';
console.log(renderToStaticMarkup(h(Markdown, null, md)).replace(/ style="[^"]*"/g, ''));

With the inline styles stripped, the output contains <pre><code><b>bold</b> & <i>x</i> and <p>Inline: <code><br></code></p>.

Expected Behavior

The code gets escaped, the way marked's default renderer does it: &lt;b&gt;bold&lt;/b&gt; &amp; &lt;i&gt;x&lt;/i&gt; and <code>&lt;br&gt;</code>.

I'd like to send a PR for this with a test, if that's okay.

What's your node version? (if relevant)

26.7.0

Lingua principale
TypeScript
Stelle
19.9k
Fork
1.1k
Merge medio
1g 15h
PR unite (30g)
49

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di resend/react-email

Tutte le issue di resend/react-email

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.