常见 SMTP 服务器端口配置
在开发邮件发送功能前,先确认目标邮箱服务商的 SMTP 设置。不同服务商的端口和地址有所不同,以下是常用配置参考:
QQ smtp.qq.com 587
163 smtp.163.com 25
126 smtp.126.com 25
前置条件
确保你的发件邮箱已开启 SMTP 服务。这里有个关键点:SMTP 密码通常不是邮箱登录密码,而是授权码或专用密钥,需要在邮箱设置里单独生成并开启。
控制器中的注册逻辑
在 Beego 的控制器中处理注册请求时,我们需要构建邮件对象并发送激活链接。下面是一个典型的实现示例,展示了如何组装配置、设置收件人以及处理异常:
// 发送激活邮件
config := `{"username":"[email protected]","password":"smtp 密码","host":"smtp.163.com","port":25}`
temail := utils.NewEMail(config)
// 指定收件人邮箱地址
temail.To = []string{user.Email}
// 指定发件人的邮箱地址
telem.From = "[email protected]"
// 指定邮件的标题
temail.Subject = "用户激活"
// 指定邮件内容,包含动态生成的激活链接
temail.HTML = "复制该连接到浏览器中激活 http://127.0.0.1:8080/active?id=" + strconv.Itoa(user.Id)
err := temail.Send()
if err != nil {
this.Data["errmsg"] = "发送激活邮件失败,请重新注册"
this.TplName = "register.html"
return
}
代码细节说明
这段代码的核心在于 utils.NewEMail 工具类的使用,它封装了底层 SMTP 协议。实际运行时要注意几点:
- URL 拼接:使用
strconv.Itoa将用户 ID 转为字符串,确保链接格式正确。生产环境建议替换为绝对路径或域名。 - 错误处理:发送失败时不能直接忽略,需要给前端反馈明确信息(如
errmsg),避免用户重复提交导致困惑。 - 模板渲染:如果
tplName指向的是 HTML 模板,记得在模板中处理errmsg变量的显示逻辑。
整体流程下来,只要 SMTP 配置无误且权限开放,邮件验证环节就能顺利跑通。

