golang 如何发送邮件?

Posted cheungxiongwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 如何发送邮件?相关的知识,希望对你有一定的参考价值。

// SendMail connects to the server at addr, switches to TLS if
// possible, authenticates with the optional mechanism a if possible,
// and then sends an email from address from, to addresses to, with
// message msg.
// The addr must include a port, as in "mail.example.com:smtp".
//
// The addresses in the to parameter are the SMTP RCPT addresses.
//
// The msg parameter should be an RFC 822-style email with headers
// first, a blank line, and then the message body. The lines of msg
// should be CRLF terminated. The msg headers should usually include
// fields such as "From", "To", "Subject", and "Cc".  Sending "Bcc"
// messages is accomplished by including an email address in the to
// parameter but not including it in the msg headers.
//
// The SendMail function and the net/smtp package are low-level
// mechanisms and provide no support for DKIM signing, MIME
// attachments (see the mime/multipart package), or other mail
// functionality. Higher-level packages exist outside of the standard
// library.
函数原型
func SendMail(addr string, a Auth, from string, to []string, msg []byte) error

/*!
username 发送者邮件
password 授权码
host 主机地址 smtp.qq.com:587 或 smtp.qq.com:25
to 接收邮箱 多个接收邮箱使用 ; 隔开
name 发送人名称
subject 发送主题
body 发送内容
mailType 发送邮件内容类型
*/
func SendMail(username, password, host, to, name,subject, body, mailType string) error {
    hp := strings.Split(host, ":")
    auth := smtp.PlainAuth("", username, password,hp[0])
    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 + "
From: " + name + "<" + username + ">
Subject: " + subject + "
" + contentType + "

" + body)
    sendTo := strings.Split(to, ";")
    err := smtp.SendMail(host, auth, username, sendTo, msg)
    return err
}

func main()  {
    err := SendMail(
        "zer******0115@foxmail.com",
        "kcll******hjbbih",
        "smtp.qq.com:587",
        "**********@qq.com",
        "学海无涯",
        "测试",
        "这是一封测试邮件",
        "html",
        )
    if err != nil{
        log.Fatal(err)
    }
}

以上是关于golang 如何发送邮件?的主要内容,如果未能解决你的问题,请参考以下文章

golang代码片段(摘抄)

在 Golang 中附加文件并通过 SMTP 发送时没有正文部分的电子邮件

golang golang发送邮件网/ smtp SMTP

golang 使用Go发送电子邮件

在 golang 中使用 gmail API 发送带附件的电子邮件

golang 使用Go(Golang)通过GMail发送电子邮件与net / smtp