Go语言 发送电子邮件时出现错误wsarecv:远程主机强制关闭了现有连接

vyu0f0g1  于 2023-01-10  发布在  Go
关注(0)|答案(2)|浏览(327)

我有下面的Go程序发送电子邮件。凭据是正确的。我甚至用curl测试了它们,我看到连接是成功的。请注意,TLS是不需要的。

package main

import (
    "fmt"
    "log"
    "net/smtp"
)

const (
    USERNAME = "ryuken@email.com"
    PASSWD   = "password1111"
    HOST     = "mail.privateemail.com"
    PORT     = "465"
)

func main() {
    from := "ryuken@email.com"
    to := []string{
        "info@email.com",
    }
    msg := []byte("From: ryuken@email.com\r\n" +
        "To: info@email.com" +
        "Subject: Golang testing mail\r\n" +
        "Email Body: Welcome to Go!\r\n")

    auth := smtp.PlainAuth("", USERNAME, PASSWD, HOST)
    url := fmt.Sprintf(HOST + ":" + PORT)
    fmt.Printf("url=[%s]\n", url)
    err := smtp.SendMail(url, auth, from, to, msg)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Mail sent successfully!")
}

你能告诉我为什么我得到下面的错误吗?
读取传输控制协议192.168.0.2:61740-〉198.54.122.135:465:wsarecv:远程主机强制关闭了现有连接。退出状态1
我尝试使用curl,我看到它连接到邮件服务器,但连接关闭了。

c:\GoProjects\goemail
λ curl -v --url "smtp://mail.privateemail.com:465" --user "ryuken@email.com:password1111" --mail-from "ryuken@email.com" --mail-rcpt "info@email.com-" --upload-file sample.txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 198.54.122.135:465...
* Connected to mail.privateemail.com (198.54.122.135) port 465 (#0)
  0     0    0     0    0     0      0      0 --:--:--  0:00:09 --:--:--     0* Recv failure: Connection was reset
  0     0    0     0    0     0      0      0 --:--:--  0:00:10 --:--:--     0
* Closing connection 0
curl: (56) Recv failure: Connection was reset

我在等一封电子邮件。

ulydmbyx

ulydmbyx1#

考虑到错误Recv failure: Connection was reset,我有几件事可能会成为您的问题。
这个响应实际上表明服务器返回了一个RST包,它会立即断开连接。
换句话说,这可能是一个TCP问题,或者可能是防火墙配置错误?这个应用程序在哪里运行,有什么样的上下文/配置?
ps:你强调TLS不是必需的,但是你使用端口465通过TLS传输消息。这是故意的吗?

kognpnkq

kognpnkq2#

非常感谢您的回复。我从https://gist.github.com/chrisgillis/10888032切换到了实现,它工作得很好。我仍然不明白我做错了什么。我对TLS的看法是错误的--它被使用了,go方法也考虑到了它。

相关问题