mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-12-30 09:16:16 -06:00
minify email html before sending
This commit is contained in:
parent
42881aa0f1
commit
d3a80b69f0
7 changed files with 31 additions and 9 deletions
|
|
@ -21,6 +21,8 @@ package email
|
|||
import (
|
||||
"bytes"
|
||||
"net/smtp"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/internal/text"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -33,7 +35,11 @@ func (s *sender) SendConfirmEmail(toAddress string, data ConfirmData) error {
|
|||
if err := s.template.ExecuteTemplate(buf, confirmTemplate, data); err != nil {
|
||||
return err
|
||||
}
|
||||
confirmBody := buf.String()
|
||||
|
||||
confirmBody, err := text.MinifyHTML(buf.String())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
msg := assembleMessage(confirmSubject, confirmBody, toAddress, s.from)
|
||||
return smtp.SendMail(s.hostAddress, s.auth, s.from, []string{toAddress}, msg)
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@ package email
|
|||
import (
|
||||
"bytes"
|
||||
"html/template"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/internal/text"
|
||||
)
|
||||
|
||||
// NewNoopSender returns a no-op email sender that will just execute the given sendCallback
|
||||
|
|
@ -50,7 +52,11 @@ func (s *noopSender) SendConfirmEmail(toAddress string, data ConfirmData) error
|
|||
if err := s.template.ExecuteTemplate(buf, confirmTemplate, data); err != nil {
|
||||
return err
|
||||
}
|
||||
confirmBody := buf.String()
|
||||
|
||||
confirmBody, err := text.MinifyHTML(buf.String())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
msg := assembleMessage(confirmSubject, confirmBody, toAddress, "test@example.org")
|
||||
s.sendCallback(toAddress, string(msg))
|
||||
|
|
@ -64,7 +70,11 @@ func (s *noopSender) SendResetEmail(toAddress string, data ResetData) error {
|
|||
if err := s.template.ExecuteTemplate(buf, resetTemplate, data); err != nil {
|
||||
return err
|
||||
}
|
||||
resetBody := buf.String()
|
||||
|
||||
resetBody, err := text.MinifyHTML(buf.String())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
msg := assembleMessage(resetSubject, resetBody, toAddress, "test@example.org")
|
||||
s.sendCallback(toAddress, string(msg))
|
||||
|
|
|
|||
|
|
@ -21,6 +21,8 @@ package email
|
|||
import (
|
||||
"bytes"
|
||||
"net/smtp"
|
||||
|
||||
"github.com/superseriousbusiness/gotosocial/internal/text"
|
||||
)
|
||||
|
||||
const (
|
||||
|
|
@ -33,7 +35,11 @@ func (s *sender) SendResetEmail(toAddress string, data ResetData) error {
|
|||
if err := s.template.ExecuteTemplate(buf, resetTemplate, data); err != nil {
|
||||
return err
|
||||
}
|
||||
resetBody := buf.String()
|
||||
|
||||
resetBody, err := text.MinifyHTML(buf.String())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
msg := assembleMessage(resetSubject, resetBody, toAddress, s.from)
|
||||
return smtp.SendMail(s.hostAddress, s.auth, s.from, []string{toAddress}, msg)
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ func (suite *UtilTestSuite) TestTemplateConfirm() {
|
|||
|
||||
suite.sender.SendConfirmEmail("user@example.org", confirmData)
|
||||
suite.Len(suite.sentEmails, 1)
|
||||
suite.Equal("Subject: GoToSocial Email Confirmation\r\nFrom: GoToSocial <test@example.org>\r\nTo: user@example.org\r\nMIME-version: 1.0;\nContent-Type: text/html;\r\n<!DOCTYPE html>\n<html>\n </head>\n <body>\n <div>\n <h1>\n Hello test!\n </h1>\n </div>\n <div>\n <p>\n You are receiving this mail because you've requested an account on <a href=\"https://example.org\">Test Instance</a>.\n </p>\n <p>\n We just need to confirm that this is your email address. To confirm your email, <a href=\"https://example.org/confirm_email?token=ee24f71d-e615-43f9-afae-385c0799b7fa\">click here</a> or paste the following in your browser's address bar:\n </p>\n <p>\n <code>\n https://example.org/confirm_email?token=ee24f71d-e615-43f9-afae-385c0799b7fa\n </code>\n </p>\n </div>\n <div>\n <p>\n If you believe you've been sent this email in error, feel free to ignore it, or contact the administrator of <a href=\"https://example.org\">Test Instance</a>.\n </p>\n </div>\n </body>\n</html>\r\n", suite.sentEmails["user@example.org"])
|
||||
suite.Equal("Subject: GoToSocial Email Confirmation\r\nFrom: GoToSocial <test@example.org>\r\nTo: user@example.org\r\nMIME-version: 1.0;\nContent-Type: text/html;\r\n<!doctype html><html></head><body><div><h1>Hello test!</h1></div><div><p>You are receiving this mail because you've requested an account on <a href=\"https://example.org\">Test Instance</a>.</p><p>We just need to confirm that this is your email address. To confirm your email, <a href=\"https://example.org/confirm_email?token=ee24f71d-e615-43f9-afae-385c0799b7fa\">click here</a> or paste the following in your browser's address bar:</p><p><code>https://example.org/confirm_email?token=ee24f71d-e615-43f9-afae-385c0799b7fa</code></p></div><div><p>If you believe you've been sent this email in error, feel free to ignore it, or contact the administrator of <a href=\"https://example.org\">Test Instance</a>.</p></div></body></html>\r\n", suite.sentEmails["user@example.org"])
|
||||
}
|
||||
|
||||
func (suite *UtilTestSuite) TestTemplateReset() {
|
||||
|
|
@ -52,7 +52,7 @@ func (suite *UtilTestSuite) TestTemplateReset() {
|
|||
|
||||
suite.sender.SendResetEmail("user@example.org", resetData)
|
||||
suite.Len(suite.sentEmails, 1)
|
||||
suite.Equal("Subject: GoToSocial Password Reset\r\nFrom: GoToSocial <test@example.org>\r\nTo: user@example.org\r\nMIME-version: 1.0;\nContent-Type: text/html;\r\n<!DOCTYPE html>\n<html>\n </head>\n <body>\n <div>\n <h1>\n Hello test!\n </h1>\n </div>\n <div>\n <p>\n You are receiving this mail because a password reset has been requested for your account on <a href=\"https://example.org\">Test Instance</a>.\n </p>\n <p>\n To reset your password, <a href=\"https://example.org/reset_email?token=ee24f71d-e615-43f9-afae-385c0799b7fa\">click here</a> or paste the following in your browser's address bar:\n </p>\n <p>\n <code>\n https://example.org/reset_email?token=ee24f71d-e615-43f9-afae-385c0799b7fa\n </code>\n </p>\n </div>\n <div>\n <p>\n If you believe you've been sent this email in error, feel free to ignore it, or contact the administrator of <a href=\"https://example.org\">Test Instance</a>.\n </p>\n </div>\n </body>\n</html>\r\n", suite.sentEmails["user@example.org"])
|
||||
suite.Equal("Subject: GoToSocial Password Reset\r\nFrom: GoToSocial <test@example.org>\r\nTo: user@example.org\r\nMIME-version: 1.0;\nContent-Type: text/html;\r\n<!doctype html><html></head><body><div><h1>Hello test!</h1></div><div><p>You are receiving this mail because a password reset has been requested for your account on <a href=\"https://example.org\">Test Instance</a>.</p><p>To reset your password, <a href=\"https://example.org/reset_email?token=ee24f71d-e615-43f9-afae-385c0799b7fa\">click here</a> or paste the following in your browser's address bar:</p><p><code>https://example.org/reset_email?token=ee24f71d-e615-43f9-afae-385c0799b7fa</code></p></div><div><p>If you believe you've been sent this email in error, feel free to ignore it, or contact the administrator of <a href=\"https://example.org\">Test Instance</a>.</p></div></body></html>\r\n", suite.sentEmails["user@example.org"])
|
||||
}
|
||||
|
||||
func TestUtilTestSuite(t *testing.T) {
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ func postformat(in string) string {
|
|||
s = html.UnescapeString(s)
|
||||
|
||||
// 3. minify html to remove any trailing newlines, spaces, unnecessary elements, etc etc
|
||||
mini, err := minifyHTML(s)
|
||||
mini, err := MinifyHTML(s)
|
||||
if err != nil {
|
||||
// if the minify failed, just return what we have
|
||||
return s
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@ import (
|
|||
|
||||
var m *minify.M
|
||||
|
||||
// minifyHTML runs html through a minifier, reducing it in size.
|
||||
func minifyHTML(in string) (string, error) {
|
||||
// MinifyHTML runs html through a minifier, reducing it in size.
|
||||
func MinifyHTML(in string) (string, error) {
|
||||
if m == nil {
|
||||
m = minify.New()
|
||||
m.Add("text/html", &html.Minifier{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue