为了账号安全,请及时绑定邮箱和手机立即绑定

在 gomail v2 中发送带有可选附件的电子邮件

在 gomail v2 中发送带有可选附件的电子邮件

Go
慕田峪9158850 2023-05-08 16:38:41
mystuff我有一个处理发送电子邮件的包。package mystuffimport (    "crypto/tls"    "gopkg.in/gomail.v2")type Params struct {    From, To, Subject, Body, Filename string}func Mail(p Params) (err error) {    m := gomail.NewMessage()    m.SetHeader("From", p.From)    m.SetHeader("To", p.To)    m.SetHeader("Subject", p.Subject)    m.SetBody("text/plain", p.Body)    m.Attach(p.Filename)    d := gomail.Dialer{Host: "smtp.example.com", Port: 25}    d.TLSConfig = &tls.Config{InsecureSkipVerify: true}    if err := d.DialAndSend(m); err != nil {        panic(err)    }    return}和发送电子邮件的主要部分package mainimport . "mystuff"func main() {    Mail(Params{From: "example@example.com", To: "some@gmail.com", Subject: "Sub", Body: "B", Filename: "/tmp/image.jpg" })}我想作为Filename一个可选参数。例如    Mail(Params{From: "example@example.com", To: "some@gmail.com", Subject: "Sub", Body: "B" })}
查看完整描述

1 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

使用文件名作为可选参数,您必须检查参数文件名的长度(字符串初始化为空):


func Mail(p Params) (err error) {

    m := gomail.NewMessage()

    m.SetHeader("From", p.From)

    m.SetHeader("To", p.To)

    m.SetHeader("Subject", p.Subject)

    m.SetBody("text/plain", p.Body)

    if len(p.Filename)>0 {

        m.Attach(p.Filename)

    }


    d := gomail.Dialer{Host: "smtp.example.com", Port: 25}

    d.TLSConfig = &tls.Config{InsecureSkipVerify: true}

    if err := d.DialAndSend(m); err != nil {

        panic(err)

    }

    return

}


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 274 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信