美文网首页
golang发送邮件以及附件

golang发送邮件以及附件

作者: Sixah | 来源:发表于2018-12-28 18:42 被阅读0次

最近工作上有个需要发送邮件的需求,所以研究了下golang怎么发送邮件,这里记录下。

  • 这里推荐一个第三方库
    go get -v github.com/jordan-wright/email
    之前也研究了官方库net/smtp,以及其他第三方库如gomail但是都不符合我的开发需求,使用的这个第三方库完美的解决了需求。
  • 下面写个例子,演示一下 email 第三方库的使用,以及使用自定义模板发送邮件
    首先在同级目录创建email-template.html,main.go两个文件。
// email-template.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <h4>亲爱的{{.ToUserName}},您好!</h4>
        <div>{{.Message}}</div>
        </br>
        <div>
            {{.FromUserName}} </br>
            {{.TimeDate}}
        </div>
    </body>
</html>
// main.go
package main 

import (
    "bytes"
    "html/template"
    "log"
    "net/smtp"
    "time"
    "github.com/jordan-wright/email"
)

func SendMail(fromUser, toUser, subject string) error {
    // NewEmail返回一个email结构体的指针
    e := email.NewEmail()
    // 发件人
    e.From = fromUser
    // 收件人(可以有多个)
    e.To = []string{toUser}
    // 邮件主题
    e.Subject = subject
    // 解析html模板
    t,err := template.ParseFiles("email-template.html")
    if err != nil {
        return err
    }
    // Buffer是一个实现了读写方法的可变大小的字节缓冲
    body := new(bytes.Buffer)
    // Execute方法将解析好的模板应用到匿名结构体上,并将输出写入body中
    t.Execute(body,struct {
        FromUserName string
        ToUserName   string
        TimeDate     string
        Message      string
    }{
        FromUserName: "go语言",
        ToUserName:   "Sixah",
        TimeDate:     time.Now().Format("2006/01/02"),
        Message:      "golang是世界上最好的语言!",
    })
    // html形式的消息
    e.HTML = body.Bytes()
    // 从缓冲中将内容作为附件到邮件中
    e.Attach(body, "email-template.html", "text/html")
    // 以路径将文件作为附件添加到邮件中
    e.AttachFile("/home/shuai/go/src/email/main.go")
    // 发送邮件(如果使用QQ邮箱发送邮件的话,passwd不是邮箱密码而是授权码)
    return e.Send("smtp.qq.com:587", smtp.PlainAuth("", "xxx@qq.com", "passwd", "smtp.qq.com"))
}

func main() {
    fromUser := "golang<xxx@qq.com>"
    toUser := "xxx@qq.com"
    subject := "hello,world"
    err := SendMail(fromUser,toUser,subject)
    if err != nil {
        log.Println("发送邮件失败")
        return
    }
    log.Println("发送邮件成功")
}
  • 下面是发送效果


    f316fa6fc6316ef2fb6b8b473f4a5def.png

附件中的中文是没有乱码的,email在解析附件的时候添加到了正文中,字符编码不是UTF-8所以显示有乱码。
时间有限,今天就先到这里啦,有空再修改更新。

相关文章

  • golang发送邮件以及附件

    最近工作上有个需要发送邮件的需求,所以研究了下golang怎么发送邮件,这里记录下。 这里推荐一个第三方库go g...

  • 使用Python发送邮箱

    发送普通文件以及添加附件 发送html内容格式的邮件

  • SMTP 发送邮件

    SMTP 是发送邮件的协议,Python 内置对 SMTP 的支持,可以发送纯文本邮件、HTML 邮件以及带附件的...

  • 61. SMTP发送邮件

    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 P...

  • 邮件发送

    SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 S...

  • python-发送Email

    1、发送简单的邮件 2、ssl安全登录,打开debug调试 3、发送附件邮件 4、群发和多附件的邮件

  • Python发送邮件

    Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有...

  • 发送邮件

    发送带附件的邮件

  • iOS12系统应用发送邮件中的附件

    iOS12系统应用发送邮件中的附件 iOS12系统应用发送邮件中的附件,如果发送邮件的内容很多,或者包含文档、图片...

  • Python 电子邮件(SMTP、POP3)

    官网地址 Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。Python对SMT...

网友评论

      本文标题:golang发送邮件以及附件

      本文链接:https://www.haomeiwen.com/subject/ousslqtx.html