在GO中在代理后面使用SMTP /电子邮件客户端

时间:2018-11-10 07:14:10

标签: email go proxy smtpclient

我正在使用“ net / mail”和“ net / smtp”在Go中创建电子邮件客户端,但是当它位于代理服务器后面时会失败。

我对于http客户端也有同样的问题,但是使用&http.Transport{Proxy: http.ProxyFromEnvironment}解决了该问题,但找不到SMTP的类似修复程序

以下代码在我的机器上有效,该机器在联合代理的后面。但是,如果我在不位于任何代理后面的VM上运行相同的代码,则可以正常工作。

package main

import (
    "fmt"
    "net/smtp"
)

func main() {
    fmt.Println("email sending")
    // Set up authentication information.
    auth := smtp.PlainAuth(
        "",
        "ma****017@gmail.com",
        "A***a",
        "smtp.gmail.com",
    )
    // Connect to the server, authenticate, set the sender and recipient,
    // and send the email all in one step.
    err := smtp.SendMail(
        "smtp.gmail.com:587",
        auth,
        "ma***17@gmail.com",
        []string{"chi****11@gmail.com"},
        []byte("This is the email body."),
    )
    if err != nil {
        panic(err)
    }
    fmt.Println("email sent")
}

1 个答案:

答案 0 :(得分:-1)

@Flimzy我是网络知识的新手,是的!现在,我了解到这不再是编码,而是更多的网络问题。

对我有用的解决方案是,我在代理计算机上配置了后缀以将其中继到Gmail SMTP服务器。 (确保您的代理服务器可以访问您需要的SMTP服务器)
需要在SMTP golang客户端中将代理计算机ip设置为SMTP主机。