栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

4、golang 发送电子邮件

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

4、golang 发送电子邮件

golang 发送电子邮件

在golang中发送电子邮件有两种方式:

  • 使用net/smtp
  • 使用gopkg.in/gomail.v2
  • 使用net/smtp

    package model
    
    import (
    	"fmt"
        "net/smtp"
    	"strings"
    )
    
    func SendToMail(userName, password, mailServer, to, subject, body, mailType string) error {
    
    	// 拼接消息体
    	var contentType string
    	if mailType == "html" {
    		contentType = "Content-Type: text/" + mailType + "; charset=UTF-8"
    	} else {
    		contentType = "Content-Type: text/plain" + "; charset=UTF-8"
    	}
    	msg := []byte("To: " + to + "rnFrom: " + userName + "rnSubject: " + subject + "rn" + contentType + "rnrn" + body)
    
    	// msg 内容输出查看
    	fmt.Println("To: " + to + "rn" +
    		"From: " + userName + "rn" +
    		"Subject: " + subject + "rn" +
    		"" + contentType + "rnrn" +
    		"" + body)
    
    	// 进行身份认证
    	hp := strings.Split(mailServer, ":")
    	auth := smtp.PlainAuth("", userName, password, hp[0])
    
    	sendTo := strings.Split(to, ";")
    	err := smtp.SendMail(mailServer, auth, userName, sendTo, msg)
    	return err
    }
    
    
    func main()  {
    	var userName  = "***@163.com"
    	var password = "***"
    	var mailServer = "smtp.163.com:25"
    	var to = "**@qq.com"
    	var subject = "犀点意象安全团队"
    
    	body := `
    		您的服务存在异常,请查收!!!
    		`
    	bodyHtml :=`
    					
    						您的服务存在异常
    					
    				
    				`
    	fmt.Println("send email")
    	var err error
    	err = SendToMail(userName, password, mailServer, to, subject, body, "")
    	if err != nil {
    		fmt.Println("Send text-mail error!")
    		fmt.Println(err)
    	} else {
    		fmt.Println("Send text-mail success!")
    	}
    	err = SendToMail(userName, password, mailServer, to, subject, bodyHtml, "html")
    	if err != nil {
    		fmt.Println("Send html-mail error!")
    		fmt.Println(err)
    	} else {
    		fmt.Println("Send html-mail success!")
    	}
    }
    
  • 使用gopkg.in/gomail.v2

    package model
    
    import (
    	"fmt"
    	"gopkg.in/gomail.v2"
    	"net/smtp"
    	"strings"
    )
    
    const (
    	// 邮件服务器地址
    	MailHost = "smtp.163.com"
    	// 端口
    	MailPort = 25
    	// 发送邮件用户账号
    	MailUser = "******@163.com"
    	// 授权密码
    	MailPwd = "********"
    )
    
    
    func SendGoMail(mailAddress []string, subject string, body string) error {
    	m := gomail.NewMessage()
    	// 这种方式可以添加别名,即 nickname, 也可以直接用m.SetHeader("From", MAIL_USER)
    	nickname := "gomail"
    	m.SetHeader("From",nickname + "<" +MailUser+ ">")
    	// 发送给多个用户
    	m.SetHeader("To", mailAddress...)
    	// 设置邮件主题
    	m.SetHeader("Subject", subject)
    	// 设置邮件正文
    	m.SetBody("text/html", body)
    	d := gomail.NewDialer(MailHost, MailPort, MailUser, MailPwd)
    	// 发送邮件
    	err := d.DialAndSend(m)
    	return err
    }
    
    
    package model
    
    import "testing"
    
    func TestSendGoMail(t *testing.T) {
    	type args struct {
    		mailAddress []string
    		subject     string
    		body        string
    	}
    	tests := []struct {
    		name    string
    		args    args
    		wantErr bool
    	}{
    		// TODO: Add test cases.
    		{
    			name: "01",
    			args:
    				args{
    					subject:"您好,这是gomail-text测试邮件",
    					mailAddress:[]string{"******@qq.com"},
    					body:`
    					您的服务存在异常,请查收!!!
    				`} ,
    			wantErr:false },
    		{
    			name: "02",
    			args:
    				args{
    					subject:"您好,这是gomail-html测试邮件",
    					mailAddress:[]string{"*****@qq.com"},
    					body:`
    							
    								您的服务存在异常
    							
    						
    				`} ,
    			wantErr:false },
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			if err := SendGoMail(tt.args.mailAddress, tt.args.subject, tt.args.body); (err != nil) != tt.wantErr {
    				t.Errorf("SendGoMail() error = %v, wantErr %v", err, tt.wantErr)
    			}
    		})
    	}
    }
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/965542.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号