go语言中beego+gomail包发送邮件功能开发流程步骤
今天我用beego框架加gopkg.in/gomail.v2包开发一个邮件发送功能,下面用QQ邮箱测试
必要条件:
1.开启POP3/SMTP服务
2.获取第三方登录的授权码,在邮箱里面设置,会在你手机号发送验证码,临时或者长期的都ok,长期的最好保存下来
开始开发:
添加发送邮箱配置信息,添加在配置文件里面 conf/app.conf
#163邮箱
#MAIL_HOST=smtp.163.com
#端口 163:25ssl是465/994
#MAIL_HOST=smtp.163.com
#MAIL_PORT=25
#[email protected]
#MAIL_PASSWORD=tk
#[email protected]
#qq邮箱
MAIL_HOST=smtp.qq.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=tk
[email protected]
MAIL_MAILER=smtp
MAIL_ENCRYPTION=null
MAIL_FROM_NAME=zongscan
创建发送邮件类
这个类我写在models里面 创建sendemail.go文件
package models
import (
"github.com/astaxie/beego"
config "github.com/astaxie/beego/config"
"fmt"
"strconv"
"gopkg.in/gomail.v2"
)
//调用 a := models.SendEmail(a,b,c)
func SendEmail(toemail string) bool {
//读取配置文件信息
iniconf, err := config.NewConfig("ini", "conf/app.conf")
if err != nil {
beego.Error(err)
}
host := iniconf.String("MAIL_HOST")
post := iniconf.String("MAIL_PORT")
from := iniconf.String("MAIL_USERNAME")
tk := iniconf.String("MAIL_PASSWORD")
fromname := iniconf.String("MAIL_FROM_NAME")
m := gomail.NewMessage()
//发送人
m.SetHeader("From", from)
//接收人
m.SetHeader("To", toemail)
//抄送人
//m.SetAddressHeader("Cc", "[email protected]", "抄送")
//主题
m.SetHeader(fromname, "beego发邮箱ces")
//内容
m.SetBody("text/html", "<h1>beego发邮箱111</h1>")
//附件
//m.Attach("./xx.png")
//需要转一下类型
intpost, err := strconv.Atoi(post)
//拿到token,并进行连接,第4个参数是填授权码
d := gomail.NewDialer(host, intpost, from, tk)
// 发送邮件
if err := d.DialAndSend(m); err != nil {
fmt.Printf("send mail err %v:", err)
panic(err)
return false
}
fmt.Printf("send mail success")
return true
}
添加路由
//发邮件
beego.Router("/sendemail", &controllers.UserController{}, "get:SendEmail")
添加控制器方法
/** 发邮件 */
func (c *UserController) SendEmail() {
f := models.SendEmail("[email protected]")
fmt.Printf("send mail %v:", f)
c.Data["json"] = f
c.ServeJSON()
}
测试一下 看看效果
完
相关文章