朋友需要在自己项目中添加一个邮件自动发送的功能(声明一下,不是专门群发垃圾邮件的,因为有许多相同的邮件需要发送,试用人工比较费时费力),我思考了一下,准备写一个Winform控件,放在任意窗体后直接可以开始操作邮件自动发送,需求如下:
1.邮件发送人信息需要保存在SQL、Access、MySQL、Excel或者TXT文本文档中
2.邮件收件人信息也需要保存在SQL、Access、MySql、Excel或者TXT文本文档中
3.邮件收件人信息后缀可以自定义,例如定义为“@XXXX.com”,如果自定义后缀,系统在发件时自动添加,否则直接使用提取的地址
4.邮件发送记录保存,系统应能配置发送记录是否保存,如果保存,可以选择保存在Excel、SQL、Access或者MySql中
5.为了避免投递邮件时被误认为是垃圾邮件,所以需要设置邮件发送间歇时间,设置间歇时间阈值,在阈值范围内随机抽取等待时间,等待完成后发送邮件,继续随机抽取等待时间发送下一份邮件
6.邮件标题保存在txt文本文件中,可以设置多个邮件标题,系统随机抽取(避免被认为是垃圾邮件)
7.邮件正文以HTML文件形式保存在硬盘中,随机抽取正文发送(避免被认为是垃圾邮件)
8.记录系统日志
9.记录系统崩溃记录
下面是系统架构图:
模块说明:
Utility:负责与数据载体通信,包括Access、Excel、SQL Server、MySql、TXT的数据写入和查询等操作,该项目内分别有处理上诉五种数据载体的五个类。
AppSettings:因为涉及到很多配置,所以这里将配置文件的读取和写入独立出来,该项目内单独一个类AppSetting
AccountInformation:获取和设置发件人以及收件人列表,该项目负责四件事情,根据调用对象传入的配置值在数据载体内查询发送人列表,查询接收人列表,编辑删除发送人列表,编辑删除收件人列表
SendMails:依赖AccountInfoemation项目获得收件人里列表和发件人列表,通过配置文件保存的系统配置进行邮件发送任务,该项目包括以下三个类,一个类负责获取收件人列表和发件人列表,一个类用于发送一封邮件的标准邮件发送类,一个类通过配置信息自动发送邮件。
Controls:界面项目。
后面的连载将逐步说明每个项目内的类实现,欢迎大家讨论。