Skip to content

Commit

Permalink
Fix: Disable automatic HTML/Text character detection when charset is …
Browse files Browse the repository at this point in the history
…provided (#348)
  • Loading branch information
axllent committed Sep 1, 2024
1 parent 259d711 commit be1d2bc
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 8 deletions.
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ require (
github.com/gomarkdown/markdown v0.0.0-20240730141124-034f12af3bf6
github.com/gorilla/mux v1.8.1
github.com/gorilla/websocket v1.5.3
github.com/jhillyerd/enmime v1.2.0
github.com/jhillyerd/enmime v1.3.0
github.com/klauspost/compress v1.17.9
github.com/kovidgoyal/imaging v1.6.3
github.com/leporo/sqlf v1.4.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jaytaylor/html2text v0.0.0-20230321000545-74c2419ad056 h1:iCHtR9CQyktQ5+f3dMVZfwD2KWJUgm7M0gdL9NGr8KA=
github.com/jaytaylor/html2text v0.0.0-20230321000545-74c2419ad056/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk=
github.com/jhillyerd/enmime v1.2.0 h1:dIu1IPEymQgoT2dzuB//ttA/xcV40NMPpQtmd4wslHk=
github.com/jhillyerd/enmime v1.2.0/go.mod h1:FRFuUPCLh8PByQv+8xRcLO9QHqaqTqreYhopv5eyk4I=
github.com/jhillyerd/enmime v1.3.0 h1:LV5kzfLidiOr8qRGIpYYmUZCnhrPbcFAnAFUnWn99rw=
github.com/jhillyerd/enmime v1.3.0/go.mod h1:6c6jg5HdRRV2FtvVL69LjiX1M8oE0xDX9VEhV3oy4gs=
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
github.com/kovidgoyal/imaging v1.6.3 h1:iNPpv7ygiaB/NOztc6APMT7yr9UwBS+rOZwIbAdtyY8=
Expand Down
12 changes: 9 additions & 3 deletions internal/storage/messages.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@ import (
// Store will save an email to the database tables.
// Returns the database ID of the saved message.
func Store(body *[]byte) (string, error) {
parser := enmime.NewParser(enmime.DisableCharacterDetection(true))

// Parse message body with enmime
env, err := enmime.ReadEnvelope(bytes.NewReader(*body))
env, err := parser.ReadEnvelope(bytes.NewReader(*body))
if err != nil {
logger.Log().Warnf("[message] %s", err.Error())
return "", nil
Expand Down Expand Up @@ -245,7 +247,9 @@ func GetMessage(id string) (*Message, error) {

r := bytes.NewReader(raw)

env, err := enmime.ReadEnvelope(r)
parser := enmime.NewParser(enmime.DisableCharacterDetection(true))

env, err := parser.ReadEnvelope(r)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -396,7 +400,9 @@ func GetAttachmentPart(id, partID string) (*enmime.Part, error) {

r := bytes.NewReader(raw)

env, err := enmime.ReadEnvelope(r)
parser := enmime.NewParser(enmime.DisableCharacterDetection(true))

env, err := parser.ReadEnvelope(r)
if err != nil {
return nil, err
}
Expand Down
4 changes: 3 additions & 1 deletion internal/storage/reindex.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ func ReindexAll() {
Metadata string
}

parser := enmime.NewParser(enmime.DisableCharacterDetection(true))

for _, ids := range chunks {
updates := []updateStruct{}

Expand All @@ -61,7 +63,7 @@ func ReindexAll() {

r := bytes.NewReader(raw)

env, err := enmime.ReadEnvelope(r)
env, err := parser.ReadEnvelope(r)
if err != nil {
logger.Log().Errorf("[message] %s", err.Error())
continue
Expand Down
4 changes: 3 additions & 1 deletion server/apiv1/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -559,7 +559,9 @@ func HTMLCheck(w http.ResponseWriter, r *http.Request) {

e := bytes.NewReader(raw)

msg, err := enmime.ReadEnvelope(e)
parser := enmime.NewParser(enmime.DisableCharacterDetection(true))

msg, err := parser.ReadEnvelope(e)
if err != nil {
httpError(w, err.Error())
return
Expand Down

0 comments on commit be1d2bc

Please sign in to comment.