销售数据
本月销售情况如下图所示:
用户增长
用户增长趋势:
package mailx import ( "context" "fmt" "log" "code.yun.ink/pkg/mailx/interfaces" "code.yun.ink/pkg/mailx/smtp" ) // HTML邮件发送示例 func ExampleHTMLEmail() { ctx := context.Background() smtpClient := smtp.NewSmtp() // 配置SMTP _, err := smtpClient.SetOption(ctx, func(opt *interfaces.Options) { opt.Smtp = &interfaces.EmailConfigDataSmtp{ Host: "smtp.gmail.com", Port: "587", Username: "your-email@gmail.com", Password: "your-app-password", } }) if err != nil { log.Fatalf("SMTP配置失败: %v", err) } // 创建HTML邮件 message := interfaces.Message{ To: []string{"recipient@example.com"}, Subject: "HTML邮件测试 - 包含图片和附件", BodyType: interfaces.ContentTypeHTML, Body: `
这是一封包含HTML格式的邮件。
下面是一张内嵌图片:
| 姓名 | 邮箱 | 状态 |
|---|---|---|
| 张三 | zhangsan@example.com | 已激活 |
如果您无法查看此邮件,请点击这里。
`, TextBody: ` 欢迎使用HTML邮件 这是一封包含HTML格式的邮件。 内嵌图片示例 下面是一张内嵌图片:[图片: Logo] 表格示例 姓名 邮箱 状态 张三 zhangsan@example.com 已激活 如果您无法查看此邮件,请访问: https://example.com `, InlineImage: []interfaces.Attachment{ { Content: "/path/to/logo.png", ContentType: "image/png", Name: "logo.png", CID: "logo", // 对应HTML中的cid:logo Type: interfaces.AttachmentTypeInline, }, }, Attachment: []interfaces.Attachment{ { Content: "/path/to/document.pdf", ContentType: "application/pdf", Name: "重要文档.pdf", Type: interfaces.AttachmentTypeFile, }, }, } // 发送邮件 if err := smtpClient.Send(ctx, message); err != nil { log.Fatalf("邮件发送失败: %v", err) } fmt.Println("HTML邮件发送成功!") } // 纯文本邮件示例 func ExampleTextEmail() { ctx := context.Background() smtpClient := smtp.NewSmtp() _, err := smtpClient.SetOption(ctx, func(opt *interfaces.Options) { opt.Smtp = &interfaces.EmailConfigDataSmtp{ Host: "smtp.gmail.com", Port: "587", Username: "your-email@gmail.com", Password: "your-app-password", } }) if err != nil { log.Fatalf("SMTP配置失败: %v", err) } message := interfaces.Message{ To: []string{"recipient@example.com"}, Subject: "纯文本邮件测试", BodyType: interfaces.ContentTypeText, Body: ` 欢迎使用邮件服务 这是一封纯文本邮件,不包含任何HTML格式。 主要特点: - 简洁明了 - 兼容性好 - 加载速度快 如有疑问,请回复此邮件。 `, Attachment: []interfaces.Attachment{ { Content: "/path/to/readme.txt", Name: "说明文档.txt", Type: interfaces.AttachmentTypeFile, }, }, } if err := smtpClient.Send(ctx, message); err != nil { log.Fatalf("邮件发送失败: %v", err) } fmt.Println("纯文本邮件发送成功!") } // 自动检测内容类型示例 func ExampleAutoDetectContentType() { ctx := context.Background() smtpClient := smtp.NewSmtp() _, err := smtpClient.SetOption(ctx, func(opt *interfaces.Options) { opt.Smtp = &interfaces.EmailConfigDataSmtp{ Host: "smtp.gmail.com", Port: "587", Username: "your-email@gmail.com", Password: "your-app-password", } }) if err != nil { log.Fatalf("SMTP配置失败: %v", err) } // 自动检测为HTML htmlMessage := interfaces.Message{ To: []string{"recipient@example.com"}, Subject: "自动检测HTML邮件", BodyType: interfaces.ContentTypeAuto, // 自动检测 Body: "因为包含HTML标签。
", } // 自动检测为纯文本 textMessage := interfaces.Message{ To: []string{"recipient@example.com"}, Subject: "自动检测纯文本邮件", BodyType: interfaces.ContentTypeAuto, // 自动检测 Body: "这会被自动识别为纯文本,因为不包含HTML标签。", } if err := smtpClient.Send(ctx, htmlMessage); err != nil { log.Printf("HTML邮件发送失败: %v", err) } else { fmt.Println("自动检测HTML邮件发送成功!") } if err := smtpClient.Send(ctx, textMessage); err != nil { log.Printf("文本邮件发送失败: %v", err) } else { fmt.Println("自动检测文本邮件发送成功!") } } // 使用字节数据作为附件示例 func ExampleByteDataAttachment() { ctx := context.Background() smtpClient := smtp.NewSmtp() _, err := smtpClient.SetOption(ctx, func(opt *interfaces.Options) { opt.Smtp = &interfaces.EmailConfigDataSmtp{ Host: "smtp.gmail.com", Port: "587", Username: "your-email@gmail.com", Password: "your-app-password", } }) if err != nil { log.Fatalf("SMTP配置失败: %v", err) } // 动态生成的CSV数据 csvData := `姓名,邮箱,部门 张三,zhangsan@example.com,技术部 李四,lisi@example.com,市场部 王五,wangwu@example.com,人事部` message := interfaces.Message{ To: []string{"recipient@example.com"}, Subject: "动态生成的附件", BodyType: interfaces.ContentTypeHTML, Body: "请查看附件中的详细信息。
", Attachment: []interfaces.Attachment{ { Data: []byte(csvData), ContentType: "text/csv", Name: "员工名单.csv", Type: interfaces.AttachmentTypeFile, }, }, } if err := smtpClient.Send(ctx, message); err != nil { log.Fatalf("邮件发送失败: %v", err) } fmt.Println("包含动态附件的邮件发送成功!") } // 复杂HTML邮件示例(包含多个内嵌图片) func ExampleComplexHTMLEmail() { ctx := context.Background() smtpClient := smtp.NewSmtp() _, err := smtpClient.SetOption(ctx, func(opt *interfaces.Options) { opt.Smtp = &interfaces.EmailConfigDataSmtp{ Host: "smtp.gmail.com", Port: "587", Username: "your-email@gmail.com", Password: "your-app-password", } }) if err != nil { log.Fatalf("SMTP配置失败: %v", err) } message := interfaces.Message{ To: []string{"recipient@example.com"}, Subject: "复杂HTML邮件 - 多图片和附件", BodyType: interfaces.ContentTypeHTML, Body: `本月销售情况如下图所示:
用户增长趋势: