122 lines
2.7 KiB
Go
122 lines
2.7 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"log"
|
||
|
||
"github.com/go-common/config"
|
||
"github.com/go-common/email"
|
||
)
|
||
|
||
func main() {
|
||
// 加载配置
|
||
cfg, err := config.LoadFromFile("./config/example.json")
|
||
if err != nil {
|
||
log.Fatal("Failed to load config:", err)
|
||
}
|
||
|
||
// 创建邮件发送器
|
||
emailConfig := cfg.GetEmail()
|
||
if emailConfig == nil {
|
||
log.Fatal("Email config is nil")
|
||
}
|
||
|
||
mailer, err := email.NewEmail(emailConfig)
|
||
if err != nil {
|
||
log.Fatal("Failed to create email client:", err)
|
||
}
|
||
|
||
// 示例1:发送原始邮件内容(推荐,最灵活)
|
||
fmt.Println("=== Example 1: Send Raw Email Content ===")
|
||
// 外部构建完整的邮件内容(MIME格式)
|
||
emailBody := []byte(`From: ` + emailConfig.From + `
|
||
To: recipient@example.com
|
||
Subject: 原始邮件测试
|
||
Content-Type: text/html; charset=UTF-8
|
||
|
||
<html>
|
||
<body>
|
||
<h1>这是原始邮件内容</h1>
|
||
<p>由外部完全控制邮件格式和内容</p>
|
||
</body>
|
||
</html>
|
||
`)
|
||
|
||
err = mailer.SendRaw(
|
||
[]string{"recipient@example.com"},
|
||
emailBody,
|
||
)
|
||
if err != nil {
|
||
log.Printf("Failed to send raw email: %v", err)
|
||
} else {
|
||
fmt.Println("Raw email sent successfully")
|
||
}
|
||
|
||
// 示例2:发送简单邮件(便捷方法)
|
||
fmt.Println("\n=== Example 2: Send Simple Email ===")
|
||
err = mailer.SendSimple(
|
||
[]string{"recipient@example.com"},
|
||
"测试邮件",
|
||
"这是一封测试邮件,使用Go标准库发送。",
|
||
)
|
||
if err != nil {
|
||
log.Printf("Failed to send email: %v", err)
|
||
} else {
|
||
fmt.Println("Email sent successfully")
|
||
}
|
||
|
||
// 示例3:发送HTML邮件
|
||
fmt.Println("\n=== Example 3: Send HTML Email ===")
|
||
htmlBody := `
|
||
<html>
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
</head>
|
||
<body>
|
||
<h1>欢迎使用邮件服务</h1>
|
||
<p>这是一封HTML格式的邮件。</p>
|
||
<p>支持<strong>富文本</strong>格式。</p>
|
||
</body>
|
||
</html>
|
||
`
|
||
|
||
err = mailer.SendHTML(
|
||
[]string{"recipient@example.com"},
|
||
"HTML邮件测试",
|
||
htmlBody,
|
||
)
|
||
if err != nil {
|
||
log.Printf("Failed to send HTML email: %v", err)
|
||
} else {
|
||
fmt.Println("HTML email sent successfully")
|
||
}
|
||
|
||
// 示例4:发送完整邮件(包含抄送、密送)
|
||
fmt.Println("\n=== Example 4: Send Full Email ===")
|
||
msg := &email.Message{
|
||
To: []string{"to@example.com"},
|
||
Cc: []string{"cc@example.com"},
|
||
Bcc: []string{"bcc@example.com"},
|
||
Subject: "完整邮件示例",
|
||
Body: "这是纯文本正文",
|
||
HTMLBody: `
|
||
<html>
|
||
<body>
|
||
<h1>这是HTML正文</h1>
|
||
<p>支持同时发送纯文本和HTML版本。</p>
|
||
</body>
|
||
</html>
|
||
`,
|
||
}
|
||
|
||
err = mailer.Send(msg)
|
||
if err != nil {
|
||
log.Printf("Failed to send full email: %v", err)
|
||
} else {
|
||
fmt.Println("Full email sent successfully")
|
||
}
|
||
|
||
fmt.Println("\nNote: Make sure your email configuration is correct and SMTP service is enabled.")
|
||
}
|
||
|