mirror of
https://github.com/charmbracelet/pop
synced 2024-10-18 14:52:16 +00:00
feat: ignore frontmatter with goldmark extension
Ignore frontmatter when parsing markdown email.
This commit is contained in:
parent
7f2ec5e5df
commit
cc2f0552cf
28
email.go
28
email.go
|
@ -16,6 +16,7 @@ import (
|
|||
"github.com/yuin/goldmark"
|
||||
"github.com/yuin/goldmark/extension"
|
||||
renderer "github.com/yuin/goldmark/renderer/html"
|
||||
"go.abhg.dev/goldmark/frontmatter"
|
||||
)
|
||||
|
||||
// ToSeparator is the separator used to split the To, Cc, and Bcc fields.
|
||||
|
@ -131,26 +132,25 @@ func sendSMTPEmail(to, cc, bcc []string, from, subject, body string, attachments
|
|||
return email.Send(smtpClient)
|
||||
}
|
||||
|
||||
func sendResendEmail(to, _, _ []string, from, subject, body string, attachments []string) error {
|
||||
func sendResendEmail(to, cc, bcc []string, from, subject, body string, attachments []string) error {
|
||||
client := resend.NewClient(resendAPIKey)
|
||||
|
||||
html := bytes.NewBufferString("")
|
||||
// If the conversion fails, we'll simply send the plain-text body.
|
||||
var options []goldmark.Option
|
||||
if unsafe {
|
||||
markdown := goldmark.New(
|
||||
goldmark.WithRendererOptions(
|
||||
renderer.WithUnsafe(),
|
||||
),
|
||||
goldmark.WithExtensions(
|
||||
extension.Strikethrough,
|
||||
extension.Table,
|
||||
extension.Linkify,
|
||||
),
|
||||
)
|
||||
_ = markdown.Convert([]byte(body), html)
|
||||
} else {
|
||||
_ = goldmark.Convert([]byte(body), html)
|
||||
options = append(options, goldmark.WithRendererOptions(
|
||||
renderer.WithUnsafe(),
|
||||
))
|
||||
}
|
||||
options = append(options, goldmark.WithExtensions(
|
||||
extension.Strikethrough,
|
||||
extension.Table,
|
||||
extension.Linkify,
|
||||
&frontmatter.Extender{},
|
||||
))
|
||||
markdown := goldmark.New(options...)
|
||||
_ = markdown.Convert([]byte(body), html)
|
||||
|
||||
request := &resend.SendEmailRequest{
|
||||
From: from,
|
||||
|
|
3
go.mod
3
go.mod
|
@ -15,9 +15,11 @@ require (
|
|||
github.com/spf13/cobra v1.8.0
|
||||
github.com/xhit/go-simple-mail/v2 v2.16.0
|
||||
github.com/yuin/goldmark v1.7.1
|
||||
go.abhg.dev/goldmark/frontmatter v0.2.0
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/BurntSushi/toml v1.2.1 // indirect
|
||||
github.com/atotto/clipboard v0.1.4 // indirect
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||
github.com/containerd/console v1.0.4 // indirect
|
||||
|
@ -42,4 +44,5 @@ require (
|
|||
golang.org/x/sys v0.17.0 // indirect
|
||||
golang.org/x/term v0.17.0 // indirect
|
||||
golang.org/x/text v0.14.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
|
5
go.sum
5
go.sum
|
@ -1,3 +1,5 @@
|
|||
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
|
||||
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
|
||||
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
|
||||
|
@ -72,6 +74,8 @@ github.com/xhit/go-simple-mail/v2 v2.16.0 h1:ouGy/Ww4kuaqu2E2UrDw7SvLaziWTB60ICL
|
|||
github.com/xhit/go-simple-mail/v2 v2.16.0/go.mod h1:b7P5ygho6SYE+VIqpxA6QkYfv4teeyG4MKqB3utRu98=
|
||||
github.com/yuin/goldmark v1.7.1 h1:3bajkSilaCbjdKVsKdZjZCLBNPL9pYzrCakKaf4U49U=
|
||||
github.com/yuin/goldmark v1.7.1/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
|
||||
go.abhg.dev/goldmark/frontmatter v0.2.0 h1:P8kPG0YkL12+aYk2yU3xHv4tcXzeVnN+gU0tJ5JnxRw=
|
||||
go.abhg.dev/goldmark/frontmatter v0.2.0/go.mod h1:XqrEkZuM57djk7zrlRUB02x8I5J0px76YjkOzhB4YlU=
|
||||
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
|
||||
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
|
@ -82,6 +86,7 @@ golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
|
|||
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
||||
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
|
|
Loading…
Reference in a new issue