调试SMTP连接

调试SMTP连接,smtp,go,Smtp,Go,我使用go的net/smtp发送电子邮件,它对某些电子邮件很有效,但对其他电子邮件无效。我收到一个554 5.5.1错误:没有有效的收件人,但我非常确定我给出了正确的邮件地址 (最终目标是使net/smtp适用于所有邮件收件人。因此,也欢迎回答这个问题) 我如何调试后台发生的事情?向SMTP服务器发送和从SMTP服务器发送哪些命令?我想重播命令行(telnet)中的命令,以了解有关错误的更多信息 这是我使用的代码(): 我知道这是一个非常模糊的问题,但是非常感谢您的帮助。看起来(经过一些调试之后

我使用go的
net/smtp
发送电子邮件,它对某些电子邮件很有效,但对其他电子邮件无效。我收到一个
554 5.5.1错误:没有有效的收件人
,但我非常确定我给出了正确的邮件地址

(最终目标是使
net/smtp
适用于所有邮件收件人。因此,也欢迎回答这个问题)

我如何调试后台发生的事情?向SMTP服务器发送和从SMTP服务器发送哪些命令?我想重播命令行(telnet)中的命令,以了解有关错误的更多信息

这是我使用的代码():

我知道这是一个非常模糊的问题,但是非常感谢您的帮助。

看起来(经过一些调试之后),拒绝有效电子邮件地址的服务器需要一个带有正确主机名的
EHLO
命令,而不仅仅是
localhost
,后者是默认的主机名

所以当我像这样在开头插入一行时

c.Hello("example.com") // use real server name here
一切正常但是:(提醒自己):如果没有正确的错误检查,永远不要运行代码。它帮助我检查所有命令的错误,例如

err = c.Hello("example.com")
...
err = c.Mail("sender@example.org")
...
err = c.Rcpt("recipient@example.net")
...
我不再确定是哪个错误消息提示我使用正确的主机名,但它类似于:

550 5.7.1 <localhost>: Helo command rejected: Don't use hostname localhost
550 5.7.1:Helo命令被拒绝:不使用主机名localhost

你能用你可以发布的收件人复制这个行为吗?我们可以复制这个行为吗?@nemo我已经做了一些进一步的调试,看起来另一台主机需要一个非本地主机
EHLO
命令。因此,一个
客户机。你好(myhost)
很有帮助。我应该自己回答这个问题还是把它全部删除?绝对是自己回答!这对任何和同一个人在一起的人来说都是有价值的信息。谢谢,@nemo。我真的很感谢你(和其他人)的帮助和耐心,不要被否决-∞.
550 5.7.1 <localhost>: Helo command rejected: Don't use hostname localhost