Go语言发送电子邮件

Go语言发送电子邮件,第1张

概述电子邮件在日常工作中有很大用途,凡项目或任务,有邮件来往可避免扯皮背锅。而在一些自动化的应用场合,也使用得广泛,特别是系统监控方面,如果在资源使用达到警戒线之前自 电子邮件在日常工作中有很大用途,凡项目或任务,有邮件来往可避免扯皮背锅。而在一些自动化的应用场合,也使用得广泛,特别是系统监控方面,如果在资源使用达到警戒线之前自动发邮件通知运维人员,能消除隐患于前期,而不至于临时临急去做善后方案。

对于多人协合(不管是不是异地)场合,邮件也有用武之地,当有代码或文档更新时,自动发邮件通知项目成员或领导,提醒各方人员知晓并及时更新。

说到发邮件,不得不提用程序的方式实现。下面就来为大家介绍一下怎么使用Go语言来实现发送电子邮件。Go语言拥有大量的库,非常方便使用。

Go语言使用 gomail 包来发送邮箱,代码如下所示:
package mainimport (    "strings"    "github.com/go-gomail/gomail")type EmailParam struct {    // ServerHost 邮箱服务器地址,如腾讯邮箱为smtp.qq.com    ServerHost string    // ServerPort 邮箱服务器端口,如腾讯邮箱为465    ServerPort int    // FromEmail 发件人邮箱地址    FromEmail string    // FromPasswd 发件人邮箱密码(注意,这里是明文形式),Todo:如果设置成密文?    FromPasswd string    // Toers 接收者邮件,如有多个,则以英文逗号(“,”)隔开,不能为空    Toers string    // CCers 抄送者邮件,如有多个,则以英文逗号(“,”)隔开,可以为空    CCers string}// 全局变量,因为发件人账号、密码,需要在发送时才指定// 注意,由于是小写,外面的包无法使用var serverHost,fromEmail,fromPasswd stringvar serverPort intvar m *gomail.Messagefunc InitEmail(ep *EmailParam) {    toers := []string{}       serverHost = ep.ServerHost    serverPort = ep.ServerPort    fromEmail = ep.FromEmail    fromPasswd = ep.FromPasswd       m = gomail.NewMessage()       if len(ep.Toers) == 0 {        return    }    for _,tmp := range strings.Split(ep.Toers,",") {        toers = append(toers,strings.Trimspace(tmp))    }       // 收件人可以有多个,故用此方式    m.Setheader("To",toers...)    //抄送列表    if len(ep.CCers) != 0 {        for _,tmp := range strings.Split(ep.CCers,") {            toers = append(toers,strings.Trimspace(tmp))        }        m.Setheader("Cc",toers...)    }    // 发件人    // 第三个参数为发件人别名,如"李大锤",可以为空(此时则为邮箱名称)    m.SetAddressheader("From","")}// SendEmail body支持HTML格式字符串func SendEmail(subject,body string) {    // 主题    m.Setheader("Subject",subject)       // 正文    m.Setbody("text/HTML",body)    d := gomail.NewPlainDialer(serverHost,serverPort,fromPasswd)    // 发送    err := d.DialAndSend(m)    if err != nil {        panic(err)    }}func main() {    serverHost := "smtp.qq.com"    serverPort := 465    fromEmail := "xxxxxxx@qq.com"     //发件人邮箱    fromPasswd := "xumkkzfscmxxxxxx"    //授权码       myToers := "xxxxxxx@qq.com" // 收件人邮箱,逗号隔开    myCCers := "" //"readchy@163.com"       subject := "这是主题"    body := `这是正文<br>             Hello <a href = "http://c.biancheng.net/">C语言中文网</a>`    // 结构体赋值    myEmail := &EmailParam {        ServerHost: serverHost,ServerPort: serverPort,FromEmail:  fromEmail,FromPasswd: fromPasswd,Toers:      myToers,CCers:      myCCers,}       InitEmail(myEmail)    SendEmail(subject,body)}
使用自定义客户端发放邮件需要以下两个要素:

1) 发送方的邮箱必须开启 stmt 和 pop3 通道,以 qq 邮箱为例,登陆 qq 邮箱 -> 设置 -> 账户 -> 开启 pop3 和 stmt 服务


2) 开启后会获得该账户的授权码,如果忘记也可以@R_404_6583@。

总结

以上是内存溢出为你收集整理的Go语言发送电子邮件全部内容,希望文章能够帮你解决Go语言发送电子邮件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存