go - 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
}
解决方案
在 docker 或 ubuntu 中运行它似乎是一个问题。(https://github.com/go-gomail/gomail/issues/80 - 尽管链接的问题来自 2017 年......)
我正在开发一个在本地运行良好的应用程序,但是dial tcp //ip i/o timeout
当通过 docker 在 ubuntu 服务器上部署时我得到了相同的结果。
当我注释掉邮件功能时,它工作正常。
如果您想出了解决方案,您能告诉我们吗?
推荐阅读
- javascript - 单击复选框后如何在文本中添加一条线?
- bioinformatics - 使用 MaSuRCA 3.2.6 汇编程序的问题
- mysql - 计算跨列的不同值
- python - Python 请求 GET 与列表中的字符串
- spring-boot - 在 Spring Boot 之外关闭服务
- python - 在循环中连接数据帧
- c++ - 如果我在每个平台上使用相同的种子,随机结果会相同吗?
- rust - 我可以从函数返回一个值和对它的引用吗?
- assembly - 将 nasm 与 __vectorcall 约定一起使用
- amazon-web-services - Kubernetes + AWS ELB 的奇怪行为