Go语言学习
  • README
  • Go 基础
    • go语言介绍
    • go语言主要特性
    • go内置类型和函数
    • init函数和main函数
    • 下划线
    • iota
    • 字符串
    • 数据类型:数组与切片
    • 数据类型:byte、rune与字符串
    • 变量的5种创建方式
    • 数据类型:字典
    • 指针
    • 数据类型:指针
    • 类型断言
    • 流程控制:defer延迟执行
    • 异常机制:panic和recover
    • 函数
    • go依赖管理
    • go中值传递、引用传递、指针传递区别
  • 标准库
    • Go net/http包
  • 数据结构
    • 哈希表
      • 为什么对 map 的 key 或 value 进行取址操作是不允许的
  • Gin
    • gin 快速开始
    • gin-swagger用法
  • Go 进阶
    • Go 指针
    • Go 中的 GC 演变是怎样的?
    • Go 的堆和栈
  • 面向对象
    • make 和 new 的区别
    • new(T) 和 &T{} 有什么区别?
  • 并发编程
    • Channel
    • Go语言 CSP 并发模型
    • GMP 模型原理
      • GMP 模型为什么要有 P ?
    • Go 协程池(goroutine pool)
    • Go语言常见的并发模式
    • Go并发实践:主动停止goroutine
  • 最佳实践
    • 发布Go语言模块
  • 软件包
    • 常用的GoLang包工具
    • Go的UUID生成
    • 现代化的命令行框架Cobra
    • 配置解析神器Viper
    • Go发送邮件gomail
    • Go反射框架Fx
    • NSQ消息队列的使用
    • Go爬虫框架colly
    • grpc-go 的安装和使用
Powered by GitBook
On this page
  • 1. 安装gomail包
  • 2. 代码
  • 3. 参考

Was this helpful?

  1. 软件包

Go发送邮件gomail

在Go中发送电子邮件的最佳方式

Previous配置解析神器ViperNextGo反射框架Fx

Last updated 2 years ago

Was this helpful?

1. 安装gomail包

go get gopkg.in/gomail.v2

更多功能可以参考   

2. 代码

/**
 * @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.

2.

https://github.com/go-gomail/gomail
golang 使用 gomail 发送邮件
使用gomail发送邮件之解决附件名乱码的问题