如何在gmail库中应用CSS样式?



我使用Gomail库成功地将电子邮件发送给用户。我为HTML使用了一个单独的模板并将HTML使用html2text库将代码转换为文本,但问题是它只显示文本,但CSS样式不适用于它。

如何应用CSS

在发送电子邮件的时候?main.go

func Verify(toEmail, accountName string) {
mail := gomail.NewMessage()
myEmail := middleware.LoadEnvVariable("APP_EMAIL")
myPassword := middleware.LoadEnvVariable("APP_PASSWORD")
body := new(bytes.Buffer)
t, err := template.ParseFiles("cmd/template.html")
if err != nil {
log.Fatal(err)
}
getAccountInfo := AccountInfo{
GetAccountName: accountName,
}
if err := t.Execute(body, getAccountInfo); err != nil {
log.Fatal("Could not execute the template", err)
}
mail.SetHeader("From", myEmail)
mail.SetHeader("To", toEmail)
mail.SetHeader("Reply-To", myEmail)
mail.SetHeader("Subject", "Confirm your email address")
mail.SetBody("text/html", html2text.HTML2Text(body.String()))
a := gomail.NewDialer("smtp.gmail.com", 587, myEmail, myPassword)
if err := a.DialAndSend(mail); err != nil {
log.Fatal(err)
}
}

template.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
.button-style{
background-color:#008CBA; 
border-color:#008CBA; 
border-radius: 4px; 
color:white; 
height: 50px; 
width: 300px;
}
</style>
</head>
<body>
<center><h1>We're glad you're here, {{.GetAccountName}}</h1></center>
<center>We just want to confirm it's you.<br><br></center>
<center>
<button class="button-style">
Click to confirm your email address
</button>
<center>
<center><br>If you didn't create a proctl account, just delete this email.</center>
</body>
</html>

根据https://en.wikipedia.org/wiki/HTML_email,不支持<head>标签:

符合RFC 2822的电子邮件软件只需要支持纯文本,不支持HTML格式。因此,如果收件人的电子邮件客户端不支持HTML格式的电子邮件,那么发送HTML格式的电子邮件可能会导致问题。在最坏的情况下,收件人将看到HTML代码而不是预期的消息。

在那些支持HTML的电子邮件客户端中,有些没有按照W3C规范一致地呈现HTML,而且许多HTML电子邮件也不兼容,这可能会导致呈现或传递问题。

特别地,<head>标记,用于容纳整个HTML文档的CSS样式规则,不被很好地支持,有时被完全剥离,导致内联样式声明成为事实上的标准尽管内联样式声明效率低下,而且不能很好地利用HTML将样式与内容分离的能力。

所以你应该像这样写电子邮件的内容:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<center><h1>We're glad you're here, {{.GetAccountName}}</h1></center>
<center>We just want to confirm it's you.<br><br></center>
<center>
<button style="background-color:#008CBA; border-color:#008CBA; border-radius: 4px; color:white; height: 50px; width: 300px;">
Click to confirm your email address
</button>
<center>
<center><br>If you didn't create a proctl account, just delete this email.</center>
</body>
</html>

最新更新