如何使用SMTP发送邮件到某台主机?

如何使用SMTP发送邮件到某台主机?

我正在尝试使用 SMTP 将邮件发送到某些服务器(例如 Gmail)上的我的帐户。

到目前为止我已经尝试过:

220 mx.google.com ESMTP y14sm3079810ibf.45
HELO
250 mx.google.com at your service
STARTTLS
220 2.0.0 Ready to start TLS
AUTH LOGIN
Connection closed by foreign host.

我做错了什么?我该如何修复它,以便我可以像使用我自己的服务器一样发送电子邮件?

答案1

仅提交STARTTLS命令不会将连接置于 TLS 模式。您必须妥善协商并执行

答案2

Gmail 需要 TLS 才能中继代表您发送邮件。当您的桌面或移动电子邮件客户端从您的 Gmail 帐户发送邮件时,这种类型的连接是必需的。

但是,任何正常的邮件服务器仍然会接受消息接收者在该服务器上无需使用 TLS 或任何类型的身份验证。例如,您可以连接到gmail-smtp-in.l.google.com端口 25 并进行未加密的 SMTP 会话。

假设你[电子邮件保护],您已登录到邮件服务器 mail.mydomain.com,并且正在向[电子邮件保护],它看起来是这样的:

  1. dig yourdomain.com mx并记下结果(假设它是 mail001.yourdomain.com)
  2. telnet mail001.yourdomain.com 25
  3. 传递讯息:
HELO mail.mydomain.com
MAIL FROM: [email protected]
RCPT TO: [email protected]
RCPT TO: [email protected]
DATA

From: "Mehrdad" <[email protected]>
To: "Enrique Peñalosa" <[email protected]>
Cc: "Gabriela Peñalosa" <[email protected]>
Date: Fri, 30 Sep 2011 11:21:19 -0700
Subject: Thanks for all the fish!

It was a wonderful picnic. I really enjoyed the salmon burgers.

See you next week,

Mehrdad

.

注意事项:

  1. 退格键不起作用在 SMTP 会话中!您应该是服务器,服务器不会出现拼写错误。如果您要手动进行实验,最好提前编写输入,以便您可以从文本编辑器中复制和粘贴每一行。
  2. 由于您的邮件不一定看起来像是来自真正的邮件服务器(例如,接收服务器可能会检查您的反向 DNS 和 SPF 记录等内容),因此您可能会无意中违反接收端的垃圾邮件保护规定。如果目的地是 Gmail,您的邮件几乎肯定会被检测为伪造邮件并直接发送到垃圾邮件文件夹。

要了解更多信息,请参阅维基百科文章

答案3

HELO向 SMTP 服务器发出了该命令。这告诉它您想使用原始 SMTP 命令。 STARTTLS不是这些命令之一,因此您不能使用STARTTLS

解决此问题的第一步是从HELO命令切换到EHLO命令。执行此操作后,您将看到 SMTP 服务器以其支持的 SMTP 扩展集进行响应。希望STARTTLS会列出。

以下是与 GMail 的 SMTP 服务器的对话:

CLIENT: EHLO me.example.com
SERVER: 250-mx.google.com at your service
SERVER: 250-SIZE 35882577
SERVER: 250-8BITMIME
SERVER: 250-STARTTLS
SERVER: 250 ENHANCEDSTATUSCODES
CLIENT: STARTTLS
SERVER: 220 2.0.0 Ready to start TLS
<negotiation begins here...>

相关内容