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

kh212irz  于 2023-01-14  发布在  Go
关注(0)|答案(1)|浏览(175)

我使用Gomail库成功地将电子邮件发送给用户。我为HTML文件使用了单独的模板,并使用html2text库将HTML代码转换为文本,但问题是它只显示文本,而没有应用CSS样式。
如何在发送电子邮件时也应用CSS

主频道,开始

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)
    }
}

模板.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>
mrfwxfqh

mrfwxfqh1#

根据https://en.wikipedia.org/wiki/HTML_email<head>标记未得到很好的支持:
符合RFC 2822的电子邮件软件只需要支持纯文本格式,不支持HTML格式。因此,如果收件人的电子邮件客户端不支持HTML格式,则发送HTML格式的电子邮件可能会导致问题。在最坏的情况下,收件人将看到HTML代码,而不是预期的消息。
在那些支持HTML的电子邮件客户端中,有些客户端的呈现不符合W3C规范,许多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>

相关问题