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

mystuff我有一个处理发送电子邮件的包。


package mystuff


import (

    "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 main


import . "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" })

}


慕田峪9158850
浏览 208回答 1
1回答

智慧大石

使用文件名作为可选参数,您必须检查参数文件名的长度(字符串初始化为空):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}
打开App,查看更多内容
随时随地看视频慕课网APP