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. QGC开发(一)---编译构建源码
  2. Firefox联手Chrome合作开发网页VR标准
  3. MySQL怎么存base64编码_MySQL中如何将字符串转为base64编码?
  4. 公众号知道我浏览他吗_公众号可以看到访客吗,公众号怎么看到访客
  5. java 设计模式 示例_Java中的访问者设计模式–示例教程
  6. 单片机学习笔记(五)
  7. 武汉大学计算机学院成绩单,2018年武汉大学各学院总评成绩计算公式汇总
  8. linux打开caj文件,在Deepin、UOS、Linux下打开caj格式文件的软件
  9. 【参考文献】软骨细胞生长培养方法
  10. Joint Autoregressive and Hierarchical Priors for Learned Image Compression文献复现
  11. GEE:LandTrendr时间序列曲线拟合
  12. JAVA实现SMS短信发送(附:代码)
  13. lol那个服务器有无限火力,全新游戏模式-无限火力上线
  14. lr背景虚化_【教程】人像后期LR+PS超详细流程+思路分析
  15. 如何让生活充满充实感
  16. 域名(DNS)原理及解析过程详解
  17. maven自定义依赖并推送到远程仓库
  18. TCP连接时CSocket粘包问题的解决方法
  19. Linux 模拟网络丢包及延时
  20. 一名年薪30W+的Java程序员讲解:想去大公司,前三年要懂些什么?

热门文章

  1. 升压IC可提升白光LED的电池电压
  2. 怎样通过《Sbo维护与开发助手软件》进行Sbo开发和维护(1/3)
  3. 「叫好」但是「不叫座」?no,「叫好」所以「不叫座」
  4. 经传主力控盘指标公式 清晰的主力控盘程度详解 通达信选股指标
  5. 【canvas 太阳系的动画】
  6. 人脸测温门禁 传感器_测温人脸门禁什么牌子好
  7. 洛谷P3403 跳楼机(最短路)
  8. JAVA习题001--产生多个随机数并使用冒泡排序将数字从小到大排序
  9. 万万没想到,低功耗也会烧毁元器件?
  10. R语言生成三维立体图