diff --git a/example/email/AnnexSend_test.go b/example/email/AnnexSend_test.go new file mode 100644 index 0000000..f3827f2 --- /dev/null +++ b/example/email/AnnexSend_test.go @@ -0,0 +1,27 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 11:24 + * @Description: + */ + +package email + +import ( + "github.com/jordan-wright/email" + "log" + "net/smtp" + "testing" +) + +func TestSendAnnex(t *testing.T) { + e := email.NewEmail() + e.From = "hzj <你的邮箱@qq.com>" + e.To = []string{"hzj <接受者的邮箱@qq.com>"} + e.Subject = "附件" + e.Text = []byte("附件") + _, _ = e.AttachFile("囚徒健身2翻译版 修改.pdf") + err := e.Send("smtp.qq.com:587", smtp.PlainAuth("", "你的邮箱@qq.com", "你的stmp的密码", "smtp.qq.com")) + if err != nil { + log.Fatal(err) + } +} diff --git a/example/email/EmailPool_test.go b/example/email/EmailPool_test.go new file mode 100644 index 0000000..0e43979 --- /dev/null +++ b/example/email/EmailPool_test.go @@ -0,0 +1,55 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 11:32 + * @Description: + */ + +package email + +import ( + "fmt" + "github.com/jordan-wright/email" + "log" + "net/smtp" + "os" + "sync" + "testing" + "time" +) + +func TestEmailPool(t *testing.T) { + ch := make(chan *email.Email, 4) + //创建2个连接的邮件池 + p, err := email.NewPool("smtp.qq.com:587", 2, smtp.PlainAuth("", "你的邮箱@qq.com", "你的stmp的密码", "smtp.qq.com")) + if err != nil { + log.Fatal("failed to create pool:", err) + } + + //进行邮件发送 + var wg sync.WaitGroup + wg.Add(2) + for i := 0; i < 2; i++ { + go func() { + defer wg.Done() + for e := range ch { + err := p.Send(e, 1*time.Second) + if err != nil { + _, _ = fmt.Fprintf(os.Stderr, "email:%v sent error:%v\n", e, err) + } + } + }() + } + + //发送四个邮件 + for i := 0; i < 4; i++ { + e := email.NewEmail() + e.From = "hzj <你的邮箱@qq.com>" + e.To = []string{"hzj <接受者的邮箱@qq.com>"} + e.Subject = "Awesome web" + e.Text = []byte(fmt.Sprintf("Awesome Web %d", i+1)) + ch <- e + } + + close(ch) + wg.Wait() +} diff --git a/example/email/HtmlSend_test.go b/example/email/HtmlSend_test.go new file mode 100644 index 0000000..ac8ccd2 --- /dev/null +++ b/example/email/HtmlSend_test.go @@ -0,0 +1,40 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 11:19 + * @Description: 测试发送html,包含抄送对象 + */ + +package email + +import ( + "github.com/jordan-wright/email" + "log" + "net/smtp" + "testing" +) + +func TestSendHtml(t *testing.T) { + e := email.NewEmail() + e.From = "hzj <你的邮箱@qq.com>" + e.To = []string{"hzj <接受者的邮箱@qq.com>"} + //设置抄送目标 + e.Cc = []string{"hzj <抄送邮箱@qq.com>"} + e.Subject = "参考:Go 每日一库" + e.HTML = []byte(` +

参考:Go 每日一库 的email库

+ + `) + err := e.Send("smtp.qq.com:587", smtp.PlainAuth("", "你的邮箱@qq.com", "你的stmp的密码", "smtp.qq.com")) + if err != nil { + log.Fatal(err) + } +} diff --git a/example/email/SimpleSend_test.go b/example/email/SimpleSend_test.go new file mode 100644 index 0000000..15edf66 --- /dev/null +++ b/example/email/SimpleSend_test.go @@ -0,0 +1,27 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 11:10 + * @Description: + */ + +package email + +import ( + "log" + "net/smtp" + "testing" + + "github.com/jordan-wright/email" +) + +func TestSimpleSend(t *testing.T) { + e := email.NewEmail() + e.From = "hzj <你的邮箱@qq.com>" + e.To = []string{"接受者的邮箱@qq.com"} + e.Subject = "测试" + e.Text = []byte("Text Body is, of course, supported!") + err := e.Send("smtp.qq.com:587", smtp.PlainAuth("", "你的邮箱@qq.com", "你的stmp的密码", "smtp.qq.com")) + if err != nil { + log.Fatal(err) + } +} diff --git a/example/email/readme.md b/example/email/readme.md new file mode 100644 index 0000000..2d682dd --- /dev/null +++ b/example/email/readme.md @@ -0,0 +1,13 @@ +获取库命令:go get github.com/jordan-wright/email + +参考地址:https://segmentfault.com/a/1190000021761747 + +参考地址:https://github.com/darjun/go-daily-lib + +使用说明: + + 先要打开邮箱,通过上方的设置找到STMP服务,打开该服务,获取对应的密码 + + 搜索对应邮箱的STMP地址和端口号,这个百度就可以找到 + + 填写对应的发送邮箱和接受邮箱,并设置STMP密码即可 \ No newline at end of file diff --git a/example/email/囚徒健身2翻译版 修改.pdf b/example/email/囚徒健身2翻译版 修改.pdf new file mode 100644 index 0000000..27e814f Binary files /dev/null and b/example/email/囚徒健身2翻译版 修改.pdf differ diff --git a/readme.md b/readme.md index 1f3eb08..167ae79 100644 --- a/readme.md +++ b/readme.md @@ -41,6 +41,8 @@ json与struct之间转换处理工具使用示例 2020/12/29:新增【Go每日一库】copier复制不同结构体的同名属性 +2020/12/29:新增【Go每日一库】emial发送邮件 + # mod vendor模式加载包 通过go mod的方式加载的github上面的包会有报红的问题,但是包本身是可以运行的,这样就是会有一个问题,如果你想要点击去看方法的内容,没办法做到