1.封装

package mailer

import (
	"fmt"
	"github.com/badoux/checkmail"
	"go-boss/config"
	"gopkg.in/gomail.v2"
)

func SendText(to string, subject string, body string) error {
	// 检查电子邮件地址是否可用
	err := checkmail.ValidateFormat(to)
	if err != nil {
		fmt.Printf("email address %s is not available: %s", to, err.Error())
		return err
	}
	c := config.NewConfig()
	host := c.Viper.Get("email.host").(string)
	port := c.Viper.Get("email.port").(int)
	username := c.Viper.Get("email.username").(string)
	password := c.Viper.Get("email.password").(string)

	// 创建消息
	msg := gomail.NewMessage()
	// 设置发件人
	msg.SetHeader("From", username)
	// 设置收件人
	msg.SetHeader("To", to)
	// 设置主题
	msg.SetHeader("Subject", subject)
	// 设置正文
	msg.SetBody("text/html", body)

	d := gomail.NewDialer(host, port, username, password)

	if err := d.DialAndSend(msg); err != nil {
		return err
	}

	return nil
}

2. 调用

func testEmail() {
	to := "xx@qq.com"
	subject := "test gmail"
	body := `<p style="color:red;">This is a email with gmail!</p>`
	// 发送邮件
	err := mailer.SendText(to, subject, body)
	if err != nil {
		println(err.Error())
	}
}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐