GO语言-邮件发送

最近项目中需要写一个定时发送备份数据邮件的的脚本
首先就是要实现发送邮件功能
一下是代码实例

package main
import (
	"bytes"
	"encoding/base64"
	"fmt"
	"io/ioutil"
	"net/smtp"
)
const (
	HOST        ="smtp.qq.com"
	SERVER_ADDR ="smtp.qq.com:25"
	USER        ="[email protected]"    //发送邮件的邮箱
	PASSWORD    ="dqalbdjiamskbehg "        //发送邮件邮箱的密码
	//大家一定要注意,这里的密码不是你的邮箱的密码
	//是你的邮箱申请给你的一个 --授权码---
	)
func main() {
	to :="[email protected]"
	mime := bytes.NewBuffer(nil)
	filename :="foo.db"
	//设置邮件
	boundary :="http://dojava.cn"
	mime.WriteString("From: 数据库备份文件<"+USER+">\r\nTo: "+to+"\r\nSubject: sqlite数据库备份文件\r\nMIME-Version: 1.0\r\n")
	mime.WriteString("Content-Type: multipart/mixed; boundary="+boundary+"\r\n\r\n")
	mime.WriteString("--"+boundary+"\r\n")    //自定义邮件内容分隔符
	//邮件正文
	mime.WriteString("\r\n\r\n\r\n")
	html :="备份数据已通过邮件发送到您的邮箱,请下载后用打开"  //邮件正文
	mime.WriteString("Content-Type: text/html; charset=utf-8\r\n\r\n")  //text/html html text/plain 纯文本
	mime.WriteString(html)
	//附件
	mime.WriteString("--"+boundary+"\r\n")
	mime.WriteString("Content-Type: application/vnd.ms-excel\r\n")   //application/octet-stream
	mime.WriteString("Content-Transfer-Encoding: base64\r\n")
	mime.WriteString("Content-Disposition: attachment; filename=\""+"C:/user/My Go/Task02sqlite/"+filename+"\"")
	mime.WriteString("\r\n\r\n")
	//将文件转为base64
	//读取并编码文件内容
	//attaData, err := ioutil.ReadFile("../bapi/main.go")
	fileName :="./Workbook.xls"
	attaData, err := ioutil.ReadFile(fileName)
	if err!= nil {
		fmt.Print(err)
	}
	b :=make([]byte, base64.StdEncoding.EncodedLen(len(attaData)))
	base64.StdEncoding.Encode(b, attaData)
	mime.Write(b)
	mime.WriteString("\r\n")
	mime.WriteString("--"+boundary+"--")

	str3 := mime.String()
	auth:= smtp.PlainAuth("", USER, PASSWORD, HOST)
	errs := smtp.SendMail(SERVER_ADDR,auth,USER,[]string{to}, []byte(str3))
	if errs!= nil {
		fmt.Println(errs)
	}else{
		fmt.Println("邮件发送成功!")
	}

}

大家要注意啊,那个密码一定是邮箱的授权码,不是你的密码
授权吗获取方式,请看以下链接

哈哈,如果有问题或者错误,大家直接提出哦,我会积极改正的!
加个关注咯 ^ - ^

你可能感兴趣的:(Go语言基础)