tkcashgame_v4/pkg/gomailer/mailer.go

45 lines
1.1 KiB
Go
Raw Permalink Normal View History

2025-10-22 10:01:11 +00:00
package gomailer
import (
"crypto/tls"
"fmt"
"gopkg.in/gomail.v2"
)
// Mailer 邮件发送接口
type Mailer interface {
SendMail(to []string, subject string, body string) error
}
// MailerImpl 邮件发送实现
type MailerImpl struct {
message *gomail.Message
dialer *gomail.Dialer
}
// NewMailer 创建邮件发送实例
func NewMailer(host string, port int, username, password, nickname string) Mailer {
m := gomail.NewMessage()
m.SetHeader(`From`, m.FormatAddress(username, nickname))
// 下面的配置改成你自己的邮箱配置
d := gomail.NewDialer(host, port, username, password)
// 修改TLSconfig
d.TLSConfig = &tls.Config{InsecureSkipVerify: true}
return &MailerImpl{
message: m,
dialer: d,
}
}
// SendMail 发送邮件
func (m *MailerImpl) SendMail(to []string, subject string, body string) error {
m.message.SetHeader(`To`, to...)
m.message.SetHeader(`Subject`, subject)
m.message.SetBody(`text/html`, body)
if err := m.dialer.DialAndSend(m.message); err != nil {
return fmt.Errorf("send mail failed: %v", err)
}
return nil
}