我现在在做毕业设计,选题是邮件群发软件,基本功能实现了,是利用邮箱发送的,但测试发现在发送超过10个目标就发送不出去了,错误为:'CoremailSys:Your message was blocked by NetEase AntiSpam+.(i8DHeXJ4S0JtWd8D.2.U.0)',好象是被邮件服务器当作垃圾邮件屏蔽了,请问如何解决这个问题呢?如何能实现无需smtp服务器发送呢?

解决方案 »

  1.   

    是不是用了代理服务器,原因我太清楚,这方面了解很少,查下socket资料
    也许该查下服务器为什么会拒绝
      

  2.   

    本机实现SMTP服务,SMTP协议不复杂,就那么几条SMTP命令,基于ASCII文本发送接收。这些通过google都可以很容易搜索到。简单的流程是这样的,首先通过DNS查询服务器的MX纪录,然后和远端服务器建立Socket连接。再通过那些SMTP命令和服务器交互完成邮件发送。这些都非常简单,邮件发送主要的代码量估计还是集中在编码上,因为邮件基于ASCII文本发送,所以二进制数据都要先被编码为ASCII文本。而现有的标准不少,要全都自己搞定,你前面写的那点程序还真可以忽略不计了。不过如果用现成的控件或库来搞定这个毕业设计的话,你的工作就毫无意义了。当然,你时间不够就用Indy来做吧,Foxmail里带的那个邮件特快也是用TIdDNSResolver、TIdSMTP等几个组件搭起来的。只需要几分钟就可以做类似的东西,虽然简陋,但还是能符合基本要求的。
      

  3.   

    现在好多邮件服务器都会限制你的发信量,如果发得太快,都会锁住你的帐户的,
    要么就自己架设台 smtp 服务器,要么,就找国外的,或者小点的服务器,象 sina, 21cn 之类,是不用想得了
      

  4.   

    我记得通过api可以控制iis的
    自己在程序里搭建一个smtp服务器,然后用自己的发(可以用3-5线程,每线程发完一封后注意sleep,控制流量)
    搭件smtp的代码去找找书,应该挺多的
      

  5.   

    我的发送就是用INDY做的,请问用INDY搭建smtp服务器怎么实现呢?
      

  6.   

    上面已经不是说完了吗?只要把IdSMTP的Host从SMTP服务器改成IdDNSResolver查询到的MX记录,其它代码基本不变就搞定了。不过这样几分钟就搞了个软件出来,真没啥正经事要你自己做了,这样做个毕设,挺无聊的。
      

  7.   

    去Indy站点下载Demo和手册回来看看吧http://lysoft.7u7.net
      

  8.   

    同意ehom,自己去看看RFC中关于SMTP的部分,核心内容很简单的,就是用一个DNS客户端解析@后面部分的MX记录,然后用一个SMTP客户端连到解析出来的IP,就可以发了。