首页 > 解决方案 > Gomail v2 拨号 tcp:i/o 超时

问题描述

我正在使用 gomail v2 向我的会员发送电子邮件,然后使用 docker 运行我的服务。

但是当我点击托管我的 sendemail 功能的 api 时,我收到了这个错误

dial tcp: i/o timeout

这是我的代码

func (cc *UserController) ForgetPassword(ctx *gin.Context)  {



    msg := "forget pass link: forgetpasslink.com"

    mailer := gomail.NewMessage()
    mailer.SetHeader("From", "thisemail@gmail.com")
    mailer.SetHeader("To", "targetemail@gmail.com")
    mailer.SetAddressHeader("Cc", "adminapp@gmail.com", "ADMIN")
    mailer.SetHeader("Subject", "test email")
    mailer.SetBody("text/plain", msg)

    dialer := gomail.NewDialer(
        "smtp.google.com",
        587,
        "thisemail@gmail.com",
        "emailpass",
    )

    err = dialer.DialAndSend(mailer)

    if err != nil {
        ctx.JSON(http.StatusBadRequest, err.Error())
        return
    }

    return
}

标签: gotimeouthttp-status-code-400gomail

解决方案


在 docker 或 ubuntu 中运行它似乎是一个问题。(https://github.com/go-gomail/gomail/issues/80 - 尽管链接的问题来自 2017 年......)

我正在开发一个在本地运行良好的应用程序,但是dial tcp //ip i/o timeout当通过 docker 在 ubuntu 服务器上部署时我得到了相同的结果。

当我注释掉邮件功能时,它工作正常。

如果您想出了解决方案,您能告诉我们吗?


推荐阅读