
本文介绍如何在 Go 语言中使用标准 net/smtp 包发送带有“高优先级”标记的电子邮件,通过设置 X-Priority、X-MSMail-Priority 和 Importance 等标准邮件头字段实现客户端可见的“重要”标识。
本文介绍如何在 go 语言中使用标准 net/smtp 包发送带有“高优先级”标记的电子邮件,通过设置 x-priority、x-msmail-priority 和 importance 等标准邮件头字段实现客户端可见的“重要”标识。
在 Go 中使用 net/smtp 发送邮件时,标准库本身不提供“设为重要”这类语义化接口,但可通过添加特定的 MIME 头字段(headers),向邮件客户端传递优先级提示。这些字段虽不改变邮件投递行为(SMTP 协议层无优先级机制),但主流邮箱客户端(如 Outlook、Thunderbird、Apple Mail 及部分 Webmail)会据此渲染“高亮”或“标记为重要”的视觉效果。
要实现高优先级邮件,需在原始邮件头中加入以下三个常用字段:
headers["X-Priority"] = "1 (Highest)" // RFC 非标准但广泛支持的旧式优先级(1=最高,5=最低) headers["X-MSMail-Priority"] = "High" // Microsoft Outlook 专用(High/Medium/Low) headers["Importance"] = "High" // RFC 2156 标准字段(High/Normal/Low)
完整修正后的示例代码如下(已优化结构、修复潜在问题):
package main
import (
"fmt"
"log"
"net/smtp"
)
func sendHighPriorityEmail(server string) {
headers := map[string]string{
"Subject": "Hi-Pri# Server " + server + " down",
"From": "YYYY@net",
"To": "XXXX@net",
"X-Priority": "1 (Highest)",
"X-MSMail-Priority": "High",
"Importance": "High",
"MIME-Version": "1.0", // 推荐显式声明 MIME 版本
"Content-Type": "text/plain; charset=utf-8", // 明确内容类型与编码
}
body := "Hello, Test"
// 构建 RFC 5322 兼容的原始邮件消息
message := ""
for k, v := range headers {
message += fmt.Sprintf("%s: %s\r\n", k, v)
}
message += "\r\n" + body // 空行分隔 headers 与 body
auth := smtp.PlainAuth("", "YYYY@net", "your-password", "test.com") // 生产环境请勿硬编码密码
err := smtp.SendMail(
"test.com:25",
auth,
"YYYY@net",
[]string{"XXXX@net"},
[]byte(message),
)
if err != nil {
log.Fatal("Failed to send email:", err)
}
log.Println("High-priority email sent successfully.")
}⚠️ 重要注意事项:
-
客户端依赖性强:优先级字段由接收方邮件客户端解析并呈现,不同客户端支持程度不同(例如 Gmail Web 版基本忽略
X-Priority,但 Outlook 桌面端响应良好)。无法保证所有收件人看到“重要”标识。 - 不可替代业务逻辑:高优先级仅是提示,不加速投递、不绕过垃圾邮件过滤、不提升 SLA。关键告警应配合短信、Webhook 或即时通讯等多通道通知。
-
避免滥用:频繁发送
Importance: High邮件可能导致收件人客户端降权,甚至被标记为骚扰邮件。 -
安全建议:生产环境中务必使用 TLS(端口 587 或 465)、SMTP 认证(如
smtp.PlainAuth),并妥善管理凭据(推荐通过环境变量或密钥管理服务注入)。
总结:Go 原生 SMTP 支持通过标准邮件头实现“高优先级”语义表达,核心在于正确设置 X-Priority、X-MSMail-Priority 和 Importance 字段。虽然效果取决于客户端实现,但在企业内部 Outlook 环境或兼容性良好的邮件系统中,仍是提升关键通知可见性的有效实践。

















