Winform邮件群发程序需求说明及示例

Google Maps做的七七八八,自己理解的功能居然和实际要做的东西出入很大。老总描述的东西起码也得半个月一个月的周期去开发,结果同事描述之后半天的时间就把问题解决了。因这个月的目标有2个,

1、之前做的Google Maps模块(未做完的Google Maps Demo暂时要先放放了,其暂时只是个半成品,等待今后有时间在进行完善。)。

2、接下来要做的邮件群发系统。

具体功能包括:

1:批量生成QQ邮箱地址,以此作为契机发送邮件。

2:根据生成QQ邮箱地址发送邮件,发送到某一点停止时,需要记录该节点,进行下次的发送任务(主要是为了避免邮件重复发送)。

3:邮件发送需要携带附件

4:因邮件系统的反垃圾机制,需要一个多邮件配置穿插的通过不同的帐号去发送邮件。

说到邮件服务商的反垃圾邮件机制,这几天做测试的时候本人只是使用了163和QQ邮箱。结果163申请完成就默认开启SMTP服务。

QQ邮箱SMTP服务要在邮箱开通后14天才能开启,官方给出的提示信息为:“您的QQ邮箱激活时间不满14天,故暂时无法设置。”。

别高兴的太早以为使用163很方便,其实不然,163对刚注册的账户也是有所限制的(如下列出的问题只针对于163新注册帐号,因为用几年前注册过的163帐号测试是不会发生如下问题,官方没有任何解释,所以新注册用户何时能够解除此限制无从知晓),只不过是暗箱操作而已,这个跟腾讯比起来有点卑鄙(尽管腾讯一直很卑鄙),因为没有任何的说明(也许是本人愚昧,没有找到)。具体表现在使用刚申请的163邮箱时,发送皆成功(佩戴附件也成功),唯独在邮件内容中添加IMG标签时会导致邮件发送失败(其他标签并未进行系统的测试,P、DIV之类的标签上没有任何问题的),官方给出的错误如下:

事务失败。 服务器响应为: DT:SPM smtp10, DsCowEBJ9EoTR2ZRAHTyAA--.739S2 1365657363 http://mail.163.com/help/help_spam_16.htm?ip=125.76.163.77&hostid=smtp10&time=1365657363

看其所给“企业退信的常见问题”均属扯蛋,并未实际的反应出其背后的限制。

163这样做无非就是禁止用户发送图片。估计官方要给出解释,无非就是一些为了用户的信息安全,以及屏蔽垃圾信息的借口所以才这么做,来搪塞一下群众。

对于开发者而言,知道这个规则之后就不会稀里糊涂的报错之后就开始找自己程序代码的问题,这样找,找到死也不见得知道其实这个错误跟自己一点关系都没有。

5:需要获取一个状态来表示邮件是否成功发送,包括该邮件地址是否存在(根据之前的经验而言,该功能通过smtp是根本不可能实现的,需要理解smtp底层机制,现在使用的微软封装好的System.Net.Mail.SmtpClient类库进行发送,是没有返回状态的,因此不能获知邮件是否成功发送,该邮件地址是否有效是服务器反馈的信息跟扯不上半点关系。只能说明在发送过程中程序上没有出现任何错误罢了)。

核心点大概暂时只有这5点(第5点现在已经不需要去做的,因为通过smtp不能实现,要想做该功能那也是通过pop3进行邮件的读取进行分析,通过该方法也不可能刚发出去的邮件就知道其发送地址是否存在。用QQ邮箱发送一个无效地址的邮件,也是过很久才会有一封退信的邮件告诉你,该发送地址不存在。所以做到即时反馈邮件发送成功与否或者收件人地址是否存在是不可能的。不然腾讯的开发人员能解决不了这个问题。他也顶多能判断出其自己,也就是所谓QQ邮箱帐号是否存在罢了。毕竟这不是我们自己开发的信息发布平台可以获取到信息进行处理)。

网上找到一篇不错的文章经过测试代码也没什么太大的问题,

文章出处:http://www.cnblogs.com/zjsimen/archive/2009/12/01/1614533.html

所有扩充功能都是在其框架上开发而成的。放弃了数据库作为存储介质改为本地文件(XML等)存储。

代码将在后边贴出。

搞邮件发送如不知SMTP,就如同用电脑不知道开电源差不多是一个概念了。

SMTP的基本运行原理请自行查阅资料。

上边给出一个维基百科的资料以及百度百科的资料,相对而言百度百科的资料能全点,3年前记得开始做邮件系统的时候就是根据百度百科的例子进行联系的。

要想了解其真正原理,本人建议通过cmd的telnet命令进行实际操作(详情参见百度百科)。

Demo Download 

电脑维修网

posted @ 2013-04-11 13:41  [FRL]...MoNey  阅读(580)  评论(0编辑  收藏  举报