无须smtp服务器中转直接发送电子邮件.docVIP

无须smtp服务器中转直接发送电子邮件.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
无须smtp服务器中转直接发送电子邮件

无须SMTP服务器中转直接发送电子邮件 前言   大家一定熟悉Foxmail中的“特快专递”,它能直接将电子邮件发送到对方的邮件服务器中,而不需要经过SMTP服务器中转,这样做有什么好处?第一:发送速度比较快,不需要等SMTP服务器对邮件进行查毒、派发、验证;第二:你可以及时掌握邮件是否发送成功的信息。有时我们用Outlook发送一封邮件,到第二天对方都没收到,可我这边确实已经发送成功了,只好让对方多收几次,到了第三天SMTP服务器回信说“不好意思,你发往XXX的邮件因为XXX原因未能送达……”,原来邮件被打回来了,尤其最近163邮箱非常离谱,我发出去的10封邮件,至少有3封会被无故打回来,说什么“网络连接失败”所以被打回,莫名其妙,可能我是免费邮箱的缘故吧,没办法只好再申请多几个邮箱,我现在已经有“chrys@21、chrys.xie@、hwxie@ust.hk ……”好多邮箱了,就是为了防止给别人发邮件时被无故退回……扯远了,不好意思。第三:我们有时需要在程序里将某些敏感信息发送至公司邮箱,例如:计算注册码时我们需要用户操作我们的软件将申请注册的信息发送回我们的售后服务邮箱,由我们的工作人员处理来这些邮件。   大家一定会想用SMTP(Simple Mail Transfer Protocol)借助SMTP服务器也能通过程序实现邮件发送,但是有一个很大问题就是安全问题,很多著名的邮件服务器运营商对于用软件方式通过SMTP协议频繁提交邮件转发的申请是不欢迎的,我的163邮箱就曾经深受其害,我那次是在写SMTP客户端发送邮件的程序,顺手就用了163的SMTP服务器,我刚发到第5封邮件时就发送失败了,我再登录163网站一查,原来我的账号被封了,原因就是我用软件发送邮件太多了(天啦,才5封而已啊),后来我花了近两个月时间跟新浪公司又赔礼又道歉,还把身份证传真过去了我的账号才被恢复。 剖析邮件传送过程   废话说太多请别介意,现在言归正传,要直接将邮件送到对方(POP或IMAP)服务器上,而不经过SMTP邮件服务器转交,其实也不难,你只要改用Unix/Linux操作系统,直接SendMail命令就能完成,但在Windows下想要实现这个功能恐怕得花一点心思了。我们首先要从协议RFC821 - Simple Mail Transfer Protocol入手来分析。   首先我们看一下Email的递送过程:   邮件原文 → 编码 → SMTP客户端 → SMTP转交服务器 → 远程SMTP服务器(对方邮局)。   “特快专递”的实现思路   邮件编码后被递送到一个SMTP转交服务器上,该服务器对信件分检(到同一邮局的被放在一起)后,根据优先级以及信件的先后次序被发送到远程邮局的SMTP服务器上。换句话说,只要我们知道了SMTP转交服务器是如何确定远程邮局SMTP服务器的地址的,就可以直接递送到远程邮局服务器。SMTP转交服务器又是知道远程邮局的地址呢?这就是域名解析所完成的工作了,就好比我们在IE浏览器输入“”这个域名,IE浏览器又如何知道目标服务器的IP地址呢?也是域名解析服务器的功劳。   电子邮件地址由两部分组成,例如:chrys@163.com,这里的chrys是邮箱名(即用户名,一个用户对应一个邮箱),163.com是邮箱服务器地址,邮箱名和邮箱服务器地址之间以“@”作为分隔。   我们只要向域名服务器发送查询“163.com”的远程邮局服务器地址便可找到远程邮局SMTP服务器的IP 地址,该查询指令被称作MX(Mail Exchange)邮件交换服务器的地址查询。远程邮局SMTP服务器的地址可能不止一个,这时,你可根据信件优先级的不同来选择对应的远程邮局,我为了安全起见会对每一个远程邮局服务器按照等级高低逐一尝试,只要将邮件成功地发送到其中一个邮局我们的任务就完成了。 我们要完成几项编程工作:本机DNS的获取、与DNS服务器通信实现MX指令查询、SMTP邮件提交,下面我们一一阐述。   获取本机DNS   代码中我封装了一个类CnetAdapterInfo,该类可以获取本机网卡的系列信息,包括本机IP地址、子网掩码、DNS、Wins、网卡MAC地址等相关信息。   首先我们需要调用IPHelpAPI 库中的GetAdaptersInfo()函数来获取系统中所有网卡信息。   DWORD GetAdaptersInfo (   __out PIP_ADAPTER_INFO pAdapterInfo,   __inout PULONG pOutBufLen   );   该函数有两个参数,pAdapterInfo是一个指针,指向一个用户定义的结构体,一般是用HeapAlloc()申请的内存空间,pOutBufLen传入pAd

文档评论(0)

karin + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档