参考链接
参考链接2
1、客户端的请求参数
type SendEmailReq struct {
ServerHost string `json:"serverHost"`
ServerPort int `json:"serverPort"`
FromEmail string `json:"fromEmail"`
FromPasswd string `json:"fromPasswd"`
Nickname string `json:"nickname"`
Toers []string `json:"toers"`
CCers []string `json:"ccers"`
IsSSL bool `json:"isSSL"`.
Subject string `json:"subject"`
Content string `json:"content"`
}
2、第一种发送邮件方式
package logic
import (
"context"
"fmt"
"github.com/jordan-wright/email"
"github.com/tal-tech/go-zero/core/logx"
"net/smtp"
"send_email/internal/svc"
"send_email/internal/types"
)
func (l *SendEmailLogic) SendEmail(req types.SendEmailReq) (*types.ResponseReply, error) {
e := email.NewEmail()
e.From = req.FromEmail
e.To = req.Toers
e.Subject = req.Subject
e.Text = []byte(req.Content)
auth := smtp.PlainAuth("", req.FromEmail, req.FromPasswd, req.ServerHost)
e.Send(fmt.Sprintf("%s:%d", req.ServerHost,req.ServerPort),auth)
return &types.ResponseReply{
Code: 200,
Message: "success",
Data: nil,
}, nil
}
3、第二种发送邮件方式
package logic
import (
"context"
"errors"
"github.com/tal-tech/go-zero/core/logx"
"gopkg.in/gomail.v2"
"send_email/internal/svc"
"send_email/internal/types"
)
func (l *SendEmailLogic) SendEmail(req types.SendEmailReq) (*types.ResponseReply, error) {
m := gomail.NewMessage()
m.SetHeader("To",req.Toers...)
if len(req.CCers) != 0 {
m.SetHeader("Cc", req.CCers...)
}
m.SetAddressHeader("From", req.FromEmail, req.Nickname)
m.SetHeader("Subject", req.Subject)
m.SetBody("text/html", req.Content)
if err := gomail.NewDialer(req.ServerHost,req.ServerPort,req.FromEmail,req.FromPasswd).DialAndSend(m);err != nil {
return nil, errors.New("发送邮件失败: "+err.Error())
}
return &types.ResponseReply{
Code: 200,
Message: "success",
Data: nil,
}, nil
}