package email import ( "fmt" "io" "net/http" "service/dbstruct" "service/library/logger" "strings" "gopkg.in/gomail.v2" ) func SendRavenIQTestResult(mail *dbstruct.Email, host string, port int, address, password string) error { url := mail.MediaComponent.Images[0].Urls[0] format := mail.MediaComponent.Images[0].Fmt body := &strings.Builder{} h2 := fmt.Sprintf("

%v

", mail.GetText()) img := fmt.Sprintf("\"图片加载错误,请联系管理员\"", url) body.WriteString(h2) body.WriteString(img) response, err := http.Get(url) if err != nil { return err } attach, err := io.ReadAll(response.Body) response.Body.Close() if err != nil { return err } attachName := fmt.Sprintf("测评结果.%v", format[6:]) m := gomail.NewMessage() m.SetHeader("From", mail.GetFrom()) m.SetHeader("To", mail.GetTo()) m.SetHeader("Subject", mail.GetSubject()) m.SetBody("text/html", body.String()) m.Attach(attachName, gomail.SetCopyFunc(func(w io.Writer) error { //设置邮件附件 第一个参数是附件名称 第二个参数是二进制文件流 _, err := w.Write(attach) return err })) logger.Info("host: %v, port: %v, address: %v, password: %v", host, port, address, password) err = gomail.NewDialer(host, port, address, password).DialAndSend(m) if err != nil { logger.Error("Send Email Fail", err) return err } return nil }