博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go 发送邮件
阅读量:6306 次
发布时间:2019-06-22

本文共 1592 字,大约阅读时间需要 5 分钟。

  hot3.png

搜索出来的使用go 发用邮件的例子并不能成功发送,所以搜到了下面这个用来解决这个问题

package servicesimport (	"fmt"	"net/smtp"	"strings")const (	EmailTo = "xxxx@163.com"  //发送给谁	EmailFrom = "xxxx@163.com"  //谁发的	EmailPass = "xxxxxxx" //密码	EmailHost = "smtp.163.com"  //一般是25端口	EmailPort = "25" //一般是25端口)type loginAuth struct {	username, password string}func LoginAuth(username, password string) smtp.Auth {	return &loginAuth{username, password}}//需要使用Login作为参数func (a *loginAuth) Start(server *smtp.ServerInfo) (string, []byte, error) {	return "LOGIN", nil, nil }func (a *loginAuth) Next(fromServer []byte, more bool) ([]byte, error) {	command := string(fromServer)	command = strings.TrimSpace(command)	command = strings.TrimSuffix(command, ":")	command = strings.ToLower(command)	if more {		if command == "username" {			return []byte(fmt.Sprintf("%s", a.username)), nil		} else if command == "password" {			return []byte(fmt.Sprintf("%s", a.password)), nil		} else {			// We've already sent everything.			return nil, fmt.Errorf("unexpected server challenge: %s", command)		}	}	return nil, nil}func SendEmail(subject, body string) error {	send_to := strings.Split(EmailTo, ";")	content_type := "Content-Type: text/plain; charset=UTF-8"	msg := []byte("To: All \r\nFrom: " + EmailFrom + " >\r\nSubject: " + subject + "\r\n" + content_type + "\r\n\r\n" + body)	auth := LoginAuth(EmailFrom, EmailPass)	err := smtp.SendMail(EmailHost+":"+EmailPort, auth, EmailFrom, send_to, msg)	return err}

需要自己实现smtp.Auth接口 然后Start()方法中添加"Login"参数。

注意:发送的邮箱必须是开启了smtp的,不然会发送不成功。

PS: 觉得不错的请点个赞吧!! (ง •̀_•́)ง

转载于:https://my.oschina.net/solate/blog/810405

你可能感兴趣的文章
linux查看命令是由哪个软件包提供的
查看>>
高级Linux工程师常用软件清单
查看>>
堆排序算法
查看>>
folders.cgi占用系统大量资源
查看>>
路由器ospf动态路由配置
查看>>
zabbix监控安装与配置
查看>>
python 异常
查看>>
last_insert_id()获取mysql最后一条记录ID
查看>>
可执行程序找不到lib库地址的处理方法
查看>>
bash数组
查看>>
Richard M. Stallman 给《自由开源软件本地化》写的前言
查看>>
oracle数据库密码过期报错
查看>>
修改mysql数据库的默认编码方式 .
查看>>
zip
查看>>
How to recover from root.sh on 11.2 Grid Infrastructure Failed
查看>>
rhel6下安装配置Squid过程
查看>>
《树莓派开发实战(第2版)》——1.1 选择树莓派型号
查看>>
在 Linux 下使用 fdisk 扩展分区容量
查看>>
结合AlphaGo算法和大数据的量化基本面分析法探讨
查看>>
如何在 Ubuntu Linux 16.04 LTS 中使用多个连接加速 apt-get/apt
查看>>