我想做一个程序
可以用Winsock控件发送电子邮件(目前只用于发送,还未考虑接收)。
但是我不知道Esmtp协议的具体格式
我曾经用两台电脑拦截FoxMail发送的邮件
但是拦截下来的数据好像被加密了希望做个这方面的高手帮忙谢谢
可以用Winsock控件发送电子邮件(目前只用于发送,还未考虑接收)。
但是我不知道Esmtp协议的具体格式
我曾经用两台电脑拦截FoxMail发送的邮件
但是拦截下来的数据好像被加密了希望做个这方面的高手帮忙谢谢
向主机连接请求1
向主机连接请求被接受1
客户连接请求被接受1
主机端:1
220 smtp.263.net ESMTP
客户端:1
EHLO cx
主机端:1
250-smtp.263.net
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH LOGIN
250 8BITMIME
客户端:1
AUTH LOGIN
主机端:1
334 VXNlcm5hbWU6
客户端:1
eHpqeHU=
主机端:1
334 UGFzc3dvcmQ6
客户端:1
*******
主机端:1
235 Authentication successful
客户端:1
MAIL FROM: <[email protected]>
主机端:1
250 Ok
客户端:1
RCPT TO: <[email protected]>
主机端:1
250 Ok
客户端:1
DATA
主机端:1
354 End data with <CR><LF>.<CR><LF>
客户端:1
Message-ID: <[email protected]>
From: "xzjxu" <[email protected]>
To: <[email protected]>
Subject: aaa
Date: Thu, 15 Feb 2001 01:17:24 +0800
MIME-Version: 1.0
Content-Type: text/plain;
charset="gb2312"
Content-Transfer-Encoding: base64
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 5.50.4133.2400
X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4133.2400
DQo=
.
主机端:1
250 Ok: queued as 075311C681030
客户端:1
QUIT
主机端:1
221 Bye
主机断开:1
客户断开:1
1 不用转发。比如我要给一个163的邮箱发邮件,那么我直接发送到163的SMTP服务器中。关于如何通过邮箱地址获得对方SMTP服务器的地址,可以通过 DNS的MX查询。我曾经写过一篇文章,通过分析qmail的代码来讲解DNS的MX查询。里面还实现了一个简单的DNS的MX查询程序。在这里:
http://blog.csdn.net/monnand/archive/2006/07/15/924731.aspx
这种情况下,是不需要认证的。但是一般的服务器会反向解析你的域名(因为你在EHLO或者HELO时候提供了你的域名),看看你提供的域名是否与DNS查询到的结果相同。如果不同,将会把你看做是垃圾邮件的发送者2 需要转发,这是大多数MUA(比如foxmail啦,outlook啦)的实现方式。你在使用这些MUA的时候都会让你设置一个SMTP服务器。有的是需要认证的(现在大多数的都需要认证)。也就是说,不管你发送邮件到什么地方,都会把邮件发送给某个特定的SMTP服务器,由这个服务器进行转发。认证方式看我的文章就好了:
http://blog.csdn.net/monnand/archive/2006/08/17/1076581.aspx关于邮件的格式,可以看RFC2822关于邮件传输协议,可以看RFC2821关于ESMTP的相关认证方式,可以看我的文章:
http://blog.csdn.net/monnand/archive/2006/08/17/1076581.aspx
以及其中提到的参考资料关于DNS的MX查询,可以看我的文章:
http://blog.csdn.net/monnand/archive/2006/07/15/924731.aspx
以及其中提到的参考资料