• 使用gomail发邮件(在Go中发送电子邮件的最佳方式)


     

    1 前言

    1
    定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码(客户端专用密码)。

     

    gomail包:

    1
    go get gopkg.in/gomail.v2

    更多功能可以参考 https://github.com/go-gomail/gomail  

    2 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    /**
     * @Author: FB
     * @Description:
     * @File:  main.go
     * @Version: 1.0.0
     * @Date: 2019/9/7 14:01
     */
    package main
     
    import (
        "gopkg.in/gomail.v2"
        "strconv"
        "log"
        "fmt"
        )
     
    func SendMail(mailTo []string, subject string, body string) error {
        //定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码
         
            //mailConn := map[string]string{
            //  "user": "xxx@163.com",
        //  "pass": "your password",
        //  "host": "smtp.163.com",
        //  "port": "465",
        //}
     
        mailConn := map[string]string{
            "user""xxx@sample.cn",
            "pass""r4r3St*****7a7Uk",
            "host""smtp.exmail.qq.com",
            "port""465",
        }
     
        port, _ := strconv.Atoi(mailConn["port"]) //转换端口类型为int
     
        m := gomail.NewMessage()
     
        m.SetHeader("From",  m.FormatAddress(mailConn["user"], "XX官方")) //这种方式可以添加别名,即“XX官方”
         //说明:如果是用网易邮箱账号发送,以下方法别名可以是中文,如果是qq企业邮箱,以下方法用中文别名,会报错,需要用上面此方法转码
        //m.SetHeader("From", "FB Sample"+"<"+mailConn["user"]+">") //这种方式可以添加别名,即“FB Sample”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 读者可以自行实验下效果
        //m.SetHeader("From", mailConn["user"])
        m.SetHeader("To", mailTo...)    //发送给多个用户
        m.SetHeader("Subject", subject) //设置邮件主题
        m.SetBody("text/html", body)    //设置邮件正文
     
        d := gomail.NewDialer(mailConn["host"], port, mailConn["user"], mailConn["pass"])
     
        err := d.DialAndSend(m)
        return err
     
    }
    func main() {
        //定义收件人
        mailTo := []string{
            "abc@sample.com",
        }
        //邮件主题为"Hello"
        subject := "Hello by golang gomail from exmail.qq.com"
        // 邮件正文
        body := "Hello,by gomail sent"
     
        err := SendMail(mailTo, subject, body)
        if err != nil {
            log.Println(err)
            fmt.Println("send fail")
            return
        }
     
        fmt.Println("send successfully")
     
    }
        

    3 参考

    1.golang 使用 gomail 发送邮件

    2.使用gomail发送邮件之解决附件名乱码的问题

      如果使用的是qq邮箱的话需要把mailConn里面的host改成‘smpt.qq.com‘,user 填写qq邮箱地址, pass需要填写你在qq邮箱设置里面获取到的授权码,qq邮箱需要先去邮箱设置里面开通smtp支持,然后获取授权码。然后就可以用qq邮箱发送了。

    安装gomail

    go get gopkg.in/gomail.v2

    package main
    
    import (
        "gopkg.in/gomail.v2"
        "strconv"
    )
    
    func SendMail(mailTo []string,subject string, body string ) error {
      //定义邮箱服务器连接信息,如果是阿里邮箱 pass填密码,qq邮箱填授权码
        mailConn := map[string]string {
            "user": "zhangqiang@xxxx.com", 
            "pass": "xxxx",  
            "host": "smtp.mxhichina.com",
            "port": "465",
        }
    
        port, _ := strconv.Atoi(mailConn["port"]) //转换端口类型为int
    
        m := gomail.NewMessage()
        m.SetHeader("From","XD Game" + "<" + mailConn["user"] + ">")  //这种方式可以添加别名,即“XD Game”, 也可以直接用<code>m.SetHeader("From",mailConn["user"])</code> 读者可以自行实验下效果
        m.SetHeader("To", mailTo...)  //发送给多个用户
        m.SetHeader("Subject", subject)  //设置邮件主题
        m.SetBody("text/html", body)     //设置邮件正文
    
        d := gomail.NewDialer(mailConn["host"], port, mailConn["user"], mailConn["pass"])
    
        err := d.DialAndSend(m)
        return err
    
    }
    func main()  {
       //定义收件人
         mailTo := []string {
        "zhangqiang@xxx.com",
        "abc@qq.com",
       "sssdd@qq.com",
        }
       //邮件主题为"Hello"
        subject := "Hello"
       // 邮件正文
        body := "Good"
        SendMail(mailTo, subject, body)
    }

    更多功能可以参考 https://github.com/go-gomail/gomail

    golang 使用 gomail 发送邮件

    标签:类型   href   实验   pre   邮箱服务器   ret   授权   body   china   

    原文地址:http://blog.51cto.com/superzhangqiang/2313517

  • 相关阅读:
    Docker系列【Docker中启动flowable查看流转日志时字体显示方框问题】
    常用功能系列【hutool生成验证码】
    注册表立即生效命令
    DataX Kettle 使用场景的对比
    图片查看器.reg
    mysql error :1114 The table ‘XXX‘ is full
    常用用时
    MySQL 之 SQL Modes
    生产环境迁移至预发布环境
    MySQL:[Err] 1292 Incorrect datetime value: ‘00000000 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
  • 原文地址:https://www.cnblogs.com/xinxihua/p/13982722.html
Copyright © 2020-2023  润新知