bborn 概念错误 直投是发给对方的pop3服务器 没有smtp什么事 再想想 http://www.shengfang.org/blog/p/B2Smtpdesign.php。 我再次找了一下资料:看到两个: 用Delphi编写邮件特快专递程序(附源程序) http://www.ccw.com.cn/htm/app/aprog/01_12_4_3.asp Received: from sm1.163.com([202.108.44.203]) by peoplemail.com.cn(JetMail 2.5.3.0) with SMTP id jm1ac3c063eec; Thu, 29 Nov 2001 07:20:25 -0000 Received: from xubo (unknown [61.154.94.146]) by sm1.163.com (Postfix) with ESMTP id 99CF11C461061 for <cxubo at peoplemail dot com.cn>; Thu, 29 Nov 2001 15:12:49 +0800 (CST) …… 从该头部资料可以看出,邮件传递的路线是由xubo→sm1.163.com→peoplemail.com.cn,其中xubo是本人所在机器,邮件是经由sm1.163.com这个中转站才送到目的地的,而我们平常所说的邮件特快专递,就是把邮件直接送到目的地而不需要中转站。 如何才能知道目的地的地址呢?我们知道电子邮件的地址由用户名(username)和邮箱域名(address.com)两部分构成的,给域名服务器发送针对“address.com”的MX指令查询即可找到目的地的地址。被查出来的目的地可能不止一个,有时这些目的地是有优先级别之分的,分别对应着邮件的优先级别,你可以根据邮件优先级的不同对应发送,也可以任意选择其中一个发送,本文的示例将选择反馈回来的第一个目的地发送,读者可根据实际需要进行改进。
使用C#制作《邮件特快专递》 http://www.vckbase.com/document/viewdoc/?id=1236 C#的附件编码就简单多了,呵呵 attachment += Convert.ToBase64String(fileBytes,0,length); 可以从此看出,与一般的通过SMTP代理不同的是少了SMTP服务器的指定及其验证的用户名跟密码。 描述一下整个过程: 首先通过前述的方法得到263.net的一个邮件交换器,然后连到这个交换器上。然后连到此服务器的25端口上, 服务器返回220。 然后依次指示用户名,发送邮箱(人),接收邮箱(人)。接收写入邮件的数据。 数据分为邮件头及邮件的正文两部分。 邮件头包含:时间,发送邮箱(人),接收邮箱(人),主题,发信程序,MIME版本号,邮件内容的类型及分割符。 当中有一些用BASE64编码的字符串就是原来的中文汉字,其实,我们在制作无SMTP代理邮件发送程序时可以直接写成中文的。 这边就讲一下邮件内容的类型及分割符,其他的很容易理解的。 这边的邮件内容类型是 multipart/mixed; 说明是由多种格式混合成的。 分隔符,是用于分隔邮件内容部分与各个附件。用boundary关键字及键值来定义。 比如本例用=====001_Dragon788446150325_=====来表示,这边有一个细节问题,键值最好要用"引起来,并不要出现空格。举个例子,如果你用boundary======001_Dragon788446150325_=====来表示的话,那FOXMAIl5.0将无法正确对邮件进行处理,邮件的内容部分被当成整个BASE64乱码文本,然而我登陆到263.net的网站去收信可以看到邮件被正常转化。 而邮件的内容部分是通过两个减号--再连上分隔符来分隔各部分的。 邮件主体从第一个--=====001_Dragon788446150325_=====开始,到第二个--=====001_Dragon788446150325_=====为内容的第一部分 Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 这两句说明了其类型及内容的字符集和编码。 在这边是指定的是base64,然后一个空行,再加上“尊敬的dreamchild先生:\r\n 这是一封邮件。”这个字符串的BASE64编码构成邮件的正文部分。 实际上,我们可以指定 Content-Transfer-Encoding:8bit然后就可以在正文部分用上原本表示了。 接下来是隔开的附件1部分, 多了一个Content-Disposition: attachment;以说明这部分是附件,以及相关的文件名filename="MM.GIF"。 附件内容部分是把文件读成一个字节数组,然后把字节数组转为base64编码的字符串。这边的是mm.gif这个文件内容。 第三部分是附件2 测试.txt 文件,测试.txt 又被foxmail处理成base64格式了,可以用原文表示的。 最后完了之后,用“回车换行加一个.号再一个回车换行”表示Data部分的结束。 如若正确过发送到达服务器,那就返回一个250状态。 然后用Quit命令跟服务器3166 这个我基本试验了一把,果然出现了我猜测的问题: 530 Authentication required 就是说认证的问题。 如果按照 bborn 的说法,连接POP3服务器,问题是如果是WEBMAIL,没有POP3服务器的呢?我觉得还是走的SMTP。为什么前几年 MAIL EXPRESS 比较火,现在不怎么听说了,问题可能就是因为 现在的服务商基本上都是需要SMTP认证了。 字体:大 中 小 |