如何使用Gomail设置发送电子邮件地址

时间:2019-05-31 14:34:07

标签: go gomail

我正在尝试使用gomail发送电子邮件,并且需要设置发送电子邮件地址。我找到了用于设置回复地址的链接,该地址很近,但与我要查找的地址不完全相同。

Send-as是我知道GMail支持的功能,其他问题也是如此。我已经在GMail本身中配置了发送方式,并且可以正常工作,只是试图查看是否可以通过gomail

进行设置

我尝试了以下方法:

通读gomail的文档

m.SetHeader("SendAs", emailAddress)
m.SetHeader("Send-As", emailAddress)
m.SetHeader("sendAs", emailAddress)
m.SetAddressHeader("SendAs", emailAddress, "")
m.SetAddressHeader("Send-As", emailAddress, "")
m.SetAddressHeader("sendAs", emailAddress, "")
func TestEmail(to, from, cc, bcc, subject, message, password, fileName string) (string, error) {
    // We need to parse the TO, CC, and BCC lists, which may contain more than one email address each.
    splitToField := strings.Split(to, ",")
    splitCCField := strings.Split(cc, ",")
    splitBCCField := strings.Split(bcc, ",")

    m := gomail.NewMessage()
    m.SetHeader("From", from)
    m.SetHeader("To", splitToField...)
    // If there is a CC address(s), then add them.
    if len(cc) > 0 {
        fmt.Println("CC LEN > 0", len(splitCCField))
        m.SetHeader("Cc", splitCCField...)
    }
    // If there is a BCC address(s), then add them.
    if len(bcc) > 0 {
        fmt.Println("BCC LEN > 0", len(splitBCCField))
        m.SetHeader("Bcc", splitBCCField...)
    }
    m.SetHeader("Subject", subject)
    m.SetBody("text/html", message)
    m.Attach("emailedQuotes/"+fileName)

    // So far, we configured this to ONLY work with GMail accounts.
    // Possibly in the future we can add an input on the front end and have them enter
    // their host/port manually. Or get fancy and parse the email address and have the most common
    // types in a struct.
    d := gomail.NewDialer("smtp.gmail.com", 587, from, password)

    err := d.DialAndSend(m)
    if err != nil {
        fmt.Println("ERROR SENDING EMAIL!", err)
        return "", err
    } else {
        fmt.Println("Email successfully sent to: ", to)
        return "Email successfully sent to:" + to, nil
    }
}

我的期望是,您将能够输入from地址的用户名/密码,并能够发送显示为from地址的send-as地址的邮件。

如果执行此操作(使用from地址的正确用户名/密码),它将正确触发电子邮件,但是send-as不会接管from地址。因此,不起作用,但没有错误。

1 个答案:

答案 0 :(得分:0)

您链接的Google API的文档中没有提及设置mime标头-据我所知,这还没有。因此,在电子邮件上设置“ SendAs” MIME标题不会产生任何效果。

您正在使用gomail-github repo表示“ Gomail只能使用SMTP服务器发送电子邮件”-这意味着它不使用您链接的api(与mime标头无关)。

对您来说,可行的方法是将发件人地址设置为您在Google帐户上作为发件人已经设置的地址,然后使用gomail通过您的google帐户发送。