通用邮件自动发送Winform控件开发(六)

时间:2022-09-12 13:16:35

到现在,当系统运行时,我们已经能得到系统的配置和收件热及发件人列表,剩下的当然就是发件了,.net FrameWork里面封装了一个System.Net.Mail命名空间,该空间内实现了发送邮件所需要的类,通过msdn我们可以看到,SmtpClient允许应用程序使用简单邮件传输协议 (SMTP) 来发送电子邮件,然后我们看看该类的成员,有Send()方法,已重载。 将电子邮件发送到 SMTP 服务器以便传递。这些方法在传输邮件的过程中将阻止其他操作,也就是说,这不是一个异步方法,再看下面的方法SendAsync(),已重载。 发送电子邮件。这些方法不会阻止调用线程,这是一个异步的方法,但是在我们实际的情况分析中,我们一次发送的邮件并不多,所以不需要试用异步方法,我们再看看属性,Host获取或设置用于SMTP失误的主机名称,就是我们使用的发件人的IP,Port获取或设置用于SMTP事物的端口,就是我们发件人使用的端口号,TimeOut获取或设置一个值,该值指定同步Send调用的超时时间,好了,我们用到的就是这些成员了,我在使用前先写了一个测试文件,查看这些成员能否是否我需要的发件功能,经测试,没问题,万事俱备!

在继续查看该类的成员时,我发现有一个事件SendCompleted,在异步电子邮件发送操作完成时出现,因为邮件发送的状态我们需要在界面上显示,所以这些事件是必须的,不过我使用的并不是异步方法,所以这个事件也用不上。

到这里,我们再停下来分析一下,目前我们具有的条件是:

1.系统的配置

2.收件人和发件人列表

3.使用一个发件人对收件人进行发信

好了,那么再看看需要实现的目标,有多个发件人账户,随机抽取一定量的发件人进行邮件发送,好,这是最基本的,其他的当然还包括邮件主题读取,内容读取等等,但是这些都是主干下面的分支实现,整个系统的核心就是:

在我们读取到的发件人列表里,随机或者顺序(由配置决定)读取发件人,然后在收件人列表中,随机抽取随机个收件账户(这里比较绕口,其实实现下来就是100个人按高矮次序站队,第一次我们要5个人,队伍最前面的五个人就站出来(队列里面就是弹出),我们再要10个人,队列前面的10个人弹出,具体需要几个人由配置决定),然后根据配置的指定去获取邮件的主题和内容,OK,最后封装成一封信件,发送,整个流程就结束了!

下面咱们看看代码实现:

Mail类:

 

发送一封邮件:

 

下面是最主要的地方了,下面的方法实现了随机抽取发件人对随机人数的发件人进行邮件内容随机构造后发送,看看具体代码: