go-gomail / gomail

The best way to send emails in Go.
MIT License
4.34k stars 574 forks source link

无法将图片添加到正文中 #154

Open wave2588 opened 3 years ago

wave2588 commented 3 years ago
    /// 加入图片
    content := fmt.Sprintf(`<img src="image/image.png" height=200 width=300 />`)

    m := gomail.NewMessage()
    //email.NewHTMLMessage

    m.SetHeader("From", "xxxxxx@qq.com") //发件人
    m.SetHeader("To", "xxxxxx@qq.com")    //收件人
    m.SetHeader("Subject", "title") //邮件标题
    m.Embed("image/image.png")
    m.SetBody("text/html", content) //邮件内容
    d := gomail.NewDialer("smtp.qq.com", 465, "xxxxx@qq.com", "xxxxx")

    /// 邮件发送服务器信息,使用授权码而非密码
    util.PanicIf(d.DialAndSend(m))

显示结果如图: image

wave2588 commented 3 years ago

期望得到您的回复~

mannixsuo commented 3 years ago

image/image.png 这个地址必须是url,你才能在邮件里面看到这个图片。

如果是从文件读取的话,需要将图片读取然后base64编码到邮件内容中。

    messages.AddAlternative("multipart/alternative", "This is a multi-part message in MIME format.")
    h := map[string][]string{}
    h["Content-Type"] = []string{"image/png;\n name=\"image.png\""}
    h["Content-Transfer-Encoding"] = []string{"base64"}
    messages.Attach("", gomail.SetHeader(h), gomail.SetCopyFunc(func(writer io.Writer) error {
        _, err := writer.Write(imageFileBuffer.Bytes())
    }))