Files
GoGinScaffold/pkg/email/email.go

55 lines
1.3 KiB
Go

package email
import (
"crypto/tls"
"fmt"
"gxy/config"
"gopkg.in/gomail.v2"
)
var (
host = config.GlobalConfig.Email.SMTPServer
port = config.GlobalConfig.Email.Port
username = config.GlobalConfig.Email.Username
password = config.GlobalConfig.Email.Password
)
// Email 发送器结构
type Email struct {
dialer *gomail.Dialer
from string
}
// NewEmail 创建一个邮件发送器实例
func NewEmail() *Email {
// 获取配置信息
host := config.GlobalConfig.Email.SMTPServer
port := config.GlobalConfig.Email.Port
username := config.GlobalConfig.Email.Username
password := config.GlobalConfig.Email.Password
// fmt.Printf("%v %v %v %v\n", host, port, username, password)
dialer := gomail.NewDialer(host, port, username, password)
dialer.TLSConfig = &tls.Config{InsecureSkipVerify: true}
return &Email{
dialer: dialer,
from: username,
}
}
// Send 发送邮件,支持 HTML 内容
func (e *Email) Send(to string, subject string, body string) error {
msg := gomail.NewMessage()
msg.SetHeader("From", e.from)
msg.SetHeader("To", to)
// msg.SetHeader("Cc", "benben@5700.cf")
msg.SetHeader("Subject", subject)
msg.SetBody("text/html", body)
if err := e.dialer.DialAndSend(msg); err != nil {
return fmt.Errorf("发送邮件失败: %w", err)
}
return nil
}