diff --git a/channel/email.go b/channel/email.go index a47ba16..4e143ca 100644 --- a/channel/email.go +++ b/channel/email.go @@ -1,9 +1,7 @@ package channel import ( - "bytes" "errors" - "github.com/yuin/goldmark" "message-pusher/common" "message-pusher/model" ) @@ -17,12 +15,10 @@ func SendEmailMessage(message *model.Message, user *model.User) error { subject = message.Title } if message.Content != "" { - var buf bytes.Buffer - err := goldmark.Convert([]byte(message.Content), &buf) + var err error + message.HTMLContent, err = common.Markdown2HTML(message.Content) if err != nil { common.SysLog(err.Error()) - } else { - message.HTMLContent = buf.String() } } return common.SendEmail(subject, user.Email, message.HTMLContent) diff --git a/common/public/message.html b/common/public/message.html index 738f1b6..373638f 100644 --- a/common/public/message.html +++ b/common/public/message.html @@ -19,7 +19,7 @@ 发布于:{{.time}}
-{{.content | unescape}} diff --git a/common/utils.go b/common/utils.go index 6eb3a0f..39615c9 100644 --- a/common/utils.go +++ b/common/utils.go @@ -1,8 +1,10 @@ package common import ( + "bytes" "fmt" "github.com/google/uuid" + "github.com/yuin/goldmark" "html/template" "log" "net" @@ -139,3 +141,13 @@ func Max(a int, b int) int { return b } } + +func Markdown2HTML(markdown string) (HTML string, err error) { + var buf bytes.Buffer + err = goldmark.Convert([]byte(markdown), &buf) + if err != nil { + return fmt.Sprintf("Markdown 渲染出错:%s", err.Error()), err + } + HTML = buf.String() + return +} diff --git a/controller/message.go b/controller/message.go index 5289ce5..94e0aff 100644 --- a/controller/message.go +++ b/controller/message.go @@ -1,11 +1,9 @@ package controller import ( - "bytes" "encoding/json" "fmt" "github.com/gin-gonic/gin" - "github.com/yuin/goldmark" "message-pusher/channel" "message-pusher/common" "message-pusher/model" @@ -173,13 +171,16 @@ func RenderMessage(c *gin.Context) { c.Status(http.StatusNotFound) return } + if message.Description != "" { + message.Description, err = common.Markdown2HTML(message.Description) + if err != nil { + common.SysLog(err.Error()) + } + } if message.Content != "" { - var buf bytes.Buffer - err := goldmark.Convert([]byte(message.Content), &buf) + message.HTMLContent, err = common.Markdown2HTML(message.Content) if err != nil { common.SysLog(err.Error()) - } else { - message.HTMLContent = buf.String() } } c.HTML(http.StatusOK, "message.html", gin.H{{{.description}}
+ {{.description | unescape}}