美文网首页
go-mail发送邮件(待)

go-mail发送邮件(待)

作者: 五岁小孩 | 来源:发表于2021-01-18 19:42 被阅读0次

    go-mail发送邮件

    • service

      go get "gopkg.in/gomail.v2"

      import (
        "errors"
        "fmt"
        "gopkg.in/gomail.v2"
      )
      
      //定义邮箱服务器连接信息,如果是阿里邮箱 pass填密码,qq邮箱填授权码
      type MailConfig struct {
        Host string `json:"Host"` //邮箱服务器地址
        Port int    `json:"Port"` //邮箱服务器端口
        User string `json:"User"` //邮箱账号
        Pass string `json:"Pass"` //邮箱密码 如果是阿里邮箱 Pass填密码,qq邮箱填授权码
        SSL  bool   `json:"SSL"`  //SSL加密传输,端口==465是默认为true
      }
      
      //mailConfig 邮件配置MailConfig 不能为空
      //mailFrom 邮件发送方 默认MailConfig账号
      //mailTo 接收邮箱 不能为空
      //subject 主题
      //message 发送消息
      func SendMail(mailConfig *MailConfig, mailFrom string, mailTo []string, subject string, message string) error {
        //默认邮件来自配置邮箱
        if IsEmpty(mailFrom) {
            mailFrom = mailConfig.User
        }
        //接收消息的邮箱不能为空
        if len(mailTo) <= 0 {
            return errors.New("mailTo:接收消息的邮箱不能为空")
        }
        m := gomail.NewMessage()
        m.SetHeader("From", m.FormatAddress(mailConfig.User, mailFrom)) //这种方式可以添加别名,
        m.SetHeader("To", mailTo...)                                    //发送给多个用户
        m.SetHeader("Subject", subject)                                 //设置邮件主题
        m.SetBody("text/html", message)                                 //设置邮件正文
        //SSL加密
        if mailConfig.SSL {
            mailConfig.Port = 465
        }
        //连接
        dialer := gomail.NewDialer(mailConfig.Host, mailConfig.Port, mailConfig.User, mailConfig.Pass)
      
        //发送
        erBySend := dialer.DialAndSend(m)
        if erBySend != nil {
            fmt.Printf("base package SendMail send error:%v", erBySend.Error())
            //error
            return erBySend
        }
        //success
        return nil
      }
      
      

    相关文章

      网友评论

          本文标题:go-mail发送邮件(待)

          本文链接:https://www.haomeiwen.com/subject/llvonktx.html