文章目录
使用 GOLANG 发送邮件
我们一起来回顾一下上一次咱们说到的GO 的验证码案例
- 验证码种类梳理
- 验证码库的安装
- 验证码库的源码介绍
- 实操,编码
- 验证码效果展示
想看看GO 咋做验证码的,欢迎查看文章 GO 的验证码案例
生活和工作中,咱们都离不开邮件的收发,要么在手机上查收和发送,要么在自己的电脑前面进行邮件编辑和处理
可是,我们会发现,很多时候,某类邮件,咱们每天都必须要在同一个时刻发出去,并且内容也是大同小异的,
而且,有时候因为各种各种各样的原因,不能准时的发送邮件,这个时候,咱们如果可以写一个定制化的发送邮件的程序那可以说还是很香的
那么,咱们还是先来看看一些基本的常识吧
邮件是什么?
邮件是指经传递方式处理的文件
邮件进行传递的过程称为
邮递
,而从事邮递服务的机构或系统,则称为邮政邮件有
国内邮件
和国际邮件两类
那么电子邮件又是个啥?
电子邮件是—种用电子手段提供信息交换
的通信方式是互联网应用最广的服务
电子邮件的优势是啥?
电子邮件依托于网络的电子邮件系统,有如下优势:
- 价格非常低廉
不管发送到哪里,都只需负担网费
- 传输快速
几秒钟之内可以发送到世界上任何指定的目的地,与世界上任何一个角落的网络用户联系
电子邮件的形式是啥样的?
- 文字
- 图像
- 声音等
想一想每次发邮件都需要经历如下的步骤
- 打开电脑
- 进入浏览器
- 打开电子邮件
- 新建 - 编辑 - 发送
大部分内容还是复制粘贴的,
妥妥的一个工具人,好滴,现在就来看看 使用 GOLang
咋发邮件
邮件协议
咱们使用编程语言需要遵守编程语言的规范,我们在浏览器里面浏览网页也是一样,需要遵循各种网络协议
那么,我们发送邮件的必须也要先知道有哪些邮件协议可以使用,咱们都来列举一下
- SMTP
SMTP
是 简单邮件传输协议,是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式
另外 SMTP
协议属于TCP/IP
协议簇
- POP3
邮局协议的第3个版本,是因特网电子邮件的第一个离线协议标准
- IMAP
是一种优于POP
的新协议
和POP
一样,IMAP
也能下载邮件、从服务器中删除邮件或询问是否有新邮件
IMAP
可让用户在服务器上创建并管理邮件文件夹或邮箱、删除邮件、查询某封信的一部分或全部内容
最终完成所有这些工作都不需要把邮件从服务器下载到用户的个人计算机上
OK,让我们开始进入到编码环节
开始编码发邮件
咱们今天就使用 SMTP
协议来发送邮件,有如下几个步骤
- 在 QQ 邮箱上面,拿到授权码
- 编码,并安装
email
邮件库 - 开始发送邮件
在 QQ
邮箱上面,拿到授权码
- 进入
QQ
邮箱,点击 设置 -> 账户
- 下滑页面,看到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
- 开启
POP3/SMTP
服务 - 开启
IMAP/SMTP
服务 - 生成授权码,这个授权码自己找地方保存起来
编码,并安装email
邮件库
咱们本次写的邮件小案例,用到的GO 的包是 "github.com/jordan-wright/email"
, 我们可以这样来手动安装
go get github.com/jordan-wright/email
不进行手动安装也没有问题,咱们可以现在看看 写一个初版的发送邮件小案例
package main
import (
"github.com/jordan-wright/email"
"log"
"net/smtp"
)
func main() {
// 简单设置 log 参数
log.SetFlags(log.Lshortfile | log.LstdFlags)
em := email.NewEmail()
// 设置 sender 发送方 的邮箱 , 此处可以填写自己的邮箱
em.From = "xx <xxx@qq.com>"
// 设置 receiver 接收方 的邮箱 此处也可以填写自己的邮箱, 就是自己发邮件给自己
em.To = []string{
"xxx@qq.com"}
// 设置主题
em.Subject = "小魔童给你发邮件了"