package mailx import ( "regexp" "strings" ) // htmlTagPattern 匹配 HTML 开标签:< 标签名 [属性...]> // 不匹配注释、DTD、结束标签( c" 被误判。 var htmlTagPattern = regexp.MustCompile(`<[a-zA-Z][a-zA-Z0-9-]*(?:\s+[^>]*)?>`) // IsHTML 判断文本是否为 HTML:要求包含至少一个完整的 HTML 开标签。 func IsHTML(s string) bool { return htmlTagPattern.MatchString(s) } // EscapeHTML 将纯文本转义为 HTML 安全的文本。 func EscapeHTML(s string) string { s = strings.ReplaceAll(s, "&", "&") s = strings.ReplaceAll(s, "<", "<") s = strings.ReplaceAll(s, ">", ">") s = strings.ReplaceAll(s, `"`, """) return s } // fileBaseName 取路径中的文件名,同时兼容 / 与 \ 分隔符。 // 用于从文件路径推导附件/内嵌图片的默认名称。 func fileBaseName(p string) string { if i := strings.LastIndexAny(p, `/\`); i >= 0 { p = p[i+1:] } if p == "" || p == "." { return "attachment" } return p }