zoukankan      html  css  js  c++  java
  • 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)
    	}
    }
    
  • 相关阅读:
    nyoj 599-奋斗的小蜗牛 (double ceil(); (temp
    nyoj 596-谁是最好的Coder (greater, less)
    nyoj 517-最小公倍数 (python range(start, end) range(length))
    用深度学习预测专业棋手走法
    阿里AI设计师一秒出图,小撒连连惊呼,真相是...
    想成为数据科学家?先做到这6点吧!
    Kubernetes 弹性伸缩全场景解析 (一)- 概念延伸与组件布局
    机器学习基础:(Python)训练集测试集分割与交叉验证
    Data Lake Analytics + OSS数据文件格式处理大全
    聊聊Flexbox布局中的flex的演算法
  • 原文地址:https://www.cnblogs.com/cheungxiongwei/p/12318310.html
Copyright © 2011-2022 走看看