golang 发送电子邮件

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

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

    package modelimport ("fmt""net/smtp""strings"
    )func SendToMail(userName, password, mailServer, to, subject, body, mailType string) error {// 拼接消息体var contentType stringif mailType == "html" {contentType = "Content-Type: text/" + mailType + "; charset=UTF-8"} else {contentType = "Content-Type: text/plain" + "; charset=UTF-8"}msg := []byte("To: " + to + "\r\nFrom: " + userName + "\r\nSubject: " + subject + "\r\n" + contentType + "\r\n\r\n" + body)// msg 内容输出查看fmt.Println("To: " + to + "\r\n" +"From: " + userName + "\r\n" +"Subject: " + subject + "\r\n" +"" + contentType + "\r\n\r\n" +"" + 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 :=`<html><body><h1>您的服务存在异常</h1></body></html>`fmt.Println("send email")var err errorerr = 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 modelimport ("fmt""gopkg.in/gomail.v2""net/smtp""strings"
    )const (// 邮件服务器地址MailHost = "smtp.163.com"// 端口MailPort = 25// 发送邮件用户账号MailUser = "******@163.com"// 授权密码MailPwd = "********"
    )/*title 使用gomail发送邮件@param []string mailAddress 收件人邮箱@param string subject 邮件主题@param string body 邮件内容@return error
    */
    func SendGoMail(mailAddress []string, subject string, body string) error {m := gomail.NewMessage()// 这种方式可以添加别名,即 nickname, 也可以直接用<code>m.SetHeader("From", MAIL_USER)</code>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 modelimport "testing"func TestSendGoMail(t *testing.T) {type args struct {mailAddress []stringsubject     stringbody        string}tests := []struct {name    stringargs    argswantErr 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:`<html><body><h1>您的服务存在异常</h1></body></html>`} ,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)}})}
    }
    

4、golang 发送电子邮件相关推荐

  1. 使用golang发送电子邮件

    电子邮件在日常工作中有很大用途,凡项目或任务,有邮件来往可避免扯皮背锅(是否背锅,取决于人,而非邮件). 而在一些自动化的应用场合,也使用得广泛,特别是系统监控方面,如果在资源使用达到警戒线之前自动发 ...

  2. 亚马逊ses如何发qq_使用Amazon SES发送电子邮件

    亚马逊ses如何发qq by Kangze Huang 黄康泽 使用Amazon SES发送电子邮件 (Sending emails with Amazon SES) 完整的AWS Web样板-教程3 ...

  3. php mail函数_PHP发送电子邮件函数mail详解

    重要:本文最后更新于2019-10-09 08:49:07,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗. PHP作为一门使用广泛的脚本语言,经过这么多年发展已经非常完善了,发送电子 ...

  4. 如何使用PHP发送电子邮件?

    本文翻译自:How to send an email using PHP? I am using PHP on a website and I want to add emailing functio ...

  5. 如何从我的Android应用程序发送电子邮件?

    我正在为Android编写应用程序. 如何从中发送电子邮件? #1楼 简单尝试这个 public void onCreate(Bundle savedInstanceState) {super.onC ...

  6. 在Python中使用SMTP发送电子邮件

    Python中有内置的smtplib模块,完成一封邮件的发送,需要做很多准备工作.第三方的py_smtp这个包也是基于smtplib的,在Python中使用py_smtp发送电子邮件非常方便,只要填写 ...

  7. C# 发送电子邮件(含附件)用到的类 system.web.mail

    主要是用到了System.Web.Mail命名空间,用到了此空间的三个类,分别是: ●MailMessage类,用于构造电子邮件 ●MailAttachment类,用于构造电子邮件附件 ●SmtpMa ...

  8. net类库中发送电子邮件的方法总结

    发送电子邮件是许多需要用户注册的网站的通用功能,通过正则表达式我们可以过滤掉不符合电子邮件格式的输入,但是仍没有办法确保用户填写的电子邮件地址一定是他本人真实有效的电子邮件地址,通常验证电子邮件真实有 ...

  9. iphone发送邮件html,iPhone使用smtp服务器发送电子邮件?

    在我的应用程序中,我能够使用smtp服务器发送电子邮件,因为我输入了正确的电子邮件ID和密码. 但当我输入我的Gmail或雅虎帐户详细信息时,我无法发送邮件. 因为我设置了relayHost = @& ...

  10. linux发邮件安装什么意思,linux – 如何找出安装/发送电子邮件的邮件程序?

    我正在尝试找出在我的服务器上发送电子邮件的电子邮件程序(如果有的话).我的雇主有几台服务器,其中大部分使用sendmail,但在我们的两台服务器上,我找不到电子邮件程序,但电子邮件已经发送了吗?我不想 ...

最新文章

  1. 入职体检体检错了_我们如何更新入职体验并获得更多用户
  2. c#怎么读htm文件_c#怎么读写文件和获取文件的扩展名
  3. RabbitMQ路由模式
  4. 大数据分析的5个方面
  5. linux之一些比较新但是常用的命令(expr ag tree cloc stat tmux axel)
  6. redis linux中的安装
  7. jsp页面 字体颜色 白色_CSS 文本字体颜色(CSS color)
  8. 非旋转Treap及可持久化[Merge,Split]
  9. 小技巧收集(10)-JS操作Cookie
  10. open cv中文文档
  11. 【python学习笔记】Python的六种内置对象
  12. Python 这个神器能自动计算函数斜率和梯度, 还能实现逻辑回归模型!
  13. android shareSDK 微博分享案例
  14. android多国语言---简写对应国家code
  15. 跟老杜手撕Spring6教程(三)Spring的入门程序
  16. 配置maven的中央仓库mirro镜像
  17. Windows 下使用anaconda虚拟环境pip install 安装pytorch出现报错There was a problem confirming the ssl certificate
  18. 基于微信小程序的高校毕业论文管理系统#毕业设计
  19. c++怎么取消换行或回到上一行
  20. numpy.random.randn()与rand()的区别

热门文章

  1. Java学习笔记(六):Java泛型
  2. TechNet中文网络广播office系列视频教程下载(一)(2007-02-28 09:18:18) 分类:Office...
  3. 孝当先健康管理品牌连锁项目说明会-南昌站圆满结束
  4. 考研数学笔记(更新中)
  5. Java、JSP报刊订阅管理系统的设计与实现
  6. 浙江省公务员考试计算机专业,浙江省公务员(机关工作人员)考试计算机专业
  7. 美团面试-2016校园招聘
  8. 【百科】有关地震的一些知识
  9. 导轮式机器人_一种轮式机器人底盘的制作方法
  10. 机动车驾驶证扣分查询