Files
mailx/examples/quickstart/main.go
T
2026-08-15 01:38:05 +08:00

52 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// quickstart 是最简单的 mailx 入门示例。
//
// 功能:用 QQ 邮箱 SMTP 发送一封纯文本邮件。
//
// 怎么运行:
// 1. 在 QQ 邮箱「设置 -> 账户」中开启 SMTP,获取授权码(不是 QQ 密码)
// 2. 把下方 main.go 里的 4 个配置改成你自己的
// 3. 在本目录执行:go run main.go
//
// 参考:https://mail.qq.com 开启 SMTP 服务的授权码获取方法
package main
import (
"context"
"fmt"
"code.yun.ink/pkg/mailx" // mailx 核心包:消息构建 + Sender 接口
"code.yun.ink/pkg/mailx/smtp" // smtp 通道:基于 SMTP 协议发送
)
func main() {
// context 用于控制发送的超时与取消,先创建空背景 context
ctx := context.Background()
// ===== 第 1 步:创建发送通道 =====
// smtp.New 接收一个 smtp.Config 配置,返回一个发送通道实例
client := smtp.New(smtp.Config{
Host: "smtp.qq.com", // SMTP 服务器地址
Port: 587, // 端口:465 走 SSL587 走 STARTTLS
User: "sender@qq.com", // 你的 QQ 邮箱地址
Password: "your-auth-code", // 授权码(QQ 邮箱后台开启 SMTP 后获取)
// From: "sender@qq.com", // 可选:默认发件人,不填则用上面的 User
})
// ===== 第 2 步:构建邮件消息 =====
// 使用链式调用(builder 模式),一行一个字段,最后 Build() 生成消息
msg := mailx.NewMessage().
From("sender@qq.com"). // 发件人(可带显示名,如 "张三" <a@qq.com>
To("receiver@example.com"). // 收件人,可传多个:To("a@x.com", "b@x.com")
Subject("hello from mailx"). // 邮件主题
Text("This is a plain text email."). // 纯文本正文
Build() // 生成 *Message
// ===== 第 3 步:发送 =====
// 传入 ctx 和消息,返回 error(nil 表示成功)
if err := client.Send(ctx, msg); err != nil {
fmt.Println("send failed:", err)
return
}
fmt.Println("send success")
}