package main
import (
"fmt"
"net/smtp"
"bytes"
"encoding/base64"
"io/ioutil"
)
const (
HOST ="smtp.126.com"
SERVER_ADDR ="smtp.126.com:25"
USER ="***@126.com" //发送邮件的邮箱
PASSWORD ="******" //发送邮件邮箱的密码
)
func main() {
to :="1*****@qq.com"
mime := bytes.NewBuffer(nil)
//设置邮件
boundary :="http://dojava.cn"
mime.WriteString("From: 邮件名称<"+USER+">\r\nTo: "+to+"\r\nSubject: 老师数据导出\r\nMIME-Version: 1.0\r\n")
mime.WriteString("Content-Type: multipart/mixed; boundary="+boundary+"\r\n\r\n")
mime.WriteString("--"+boundary+"\r\n") //自定义邮件内容分隔符
//邮件正文
html :="导出数据已通过邮件发送到您的邮箱,请下载后用excel打开" //邮件正文
mime.WriteString("Content-Type: text/html; charset=utf-8\r\n\r\n") //text/html html text/plain 纯文本
mime.WriteString(html)
mime.WriteString("\r\n\r\n\r\n")
//附件
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=\""+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("邮件发送成功!")
}
}
/** //smtp原始数据
From: 发送数据啊 <**@126.com>
Date: Fri, 03 Nov 2017 23:13:02 +0800
To: 1**@qq.com
Subject: 老师数据差点
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=http://dojava.cn
--http://dojava.cn
Content-Type: text/plain; charset=utf-8
数据查看啊
--http://dojava.cn
Content-Type: application/octet-stream
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="文件名测试.go"
cGFja2FnZSBtYWluCgppbXBvcnQgKAoJXyAiYmFwaS9yb3V0ZXJzIgoKCSJnaXRodWIuY29tL2Fz
dGF4aWUvYmVlZ28iCgkiZ2l0aHViLmNvbS9hc3RheGllL2JlZWdvL29ybSIKCV8gImdpdGh1Yi5j
b20vZ28tc3FsLWRyaXZlci9teXNxbCIKKQoKZnVuYyBpbml0KCkgewoJb3JtLlJlZ2lzdGVyRGF0
YUJhc2UoImRlZmF1bHQiLCAibXlzcWwiLCAicm9vdDpyb290QHRjcCgxMjcuMC4wLjE6MzMwNikv
bXliYnMiKQp9CgpmdW5jIG1haW4oKSB7CglpZiBiZWVnby5CQ29uZmlnLlJ1bk1vZGUgPT0gImRl
diIgewoJCWJlZWdvLkJDb25maWcuV2ViQ29uZmlnLkRpcmVjdG9yeUluZGV4ID0gdHJ1ZQoJCWJl
ZWdvLkJDb25maWcuV2ViQ29uZmlnLlN0YXRpY0RpclsiL3N3YWdnZXIiXSA9ICJzd2FnZ2VyIgoJ
fQoJYmVlZ28uUnVuKCkKfQo=
--http://dojava.cn--
**/
原文链接 : http://dojava.cn/post/view/62.html原文链接