深入Lumisoft.NET实现邮件发送功能的方法详解

在前面的一些文章中,有介绍过DotNet内置SMTP类的邮件发送功能,附件、嵌入图片的模式都有介绍,本文继续介绍Lumisoft.NET这个非常优秀的开源组件,用该组件来设计开发邮件工具,将变得更加方便,功能更加强大。网上很多文章基本介绍如何使用该组件来收取邮件较多,较少介绍使用该组件做邮件发送功能的。本文主要探寻使用该组件实现邮件的发送功能,邮件发送有两种方式,一种是不用发件人即可发送邮件,一种是使用发件人账户密码和SMTP服务器来实现邮件发送的,本文分别对这两种方式进行介绍。

组件下载地址: 

组件论坛地址:?g=forum 

秉承一贯的做法,先贴出相关的实现图形,感官认识下,在进入详细的介绍说明,以求达到最好的理解深度。

1、 首先是发件人的设置,可以从文本文件的导出,以及新建等操作,以方便用户操作。 

深入Lumisoft.NET实现邮件发送功能的方法详解

 

2、 内容也支持导入导出,并且保存到数据库,方便进行记录及操作等,另外可以对内容进行随机混淆,混淆的内容在HTML邮件中式隐藏的,方便糊弄一下服务器的识别。

深入Lumisoft.NET实现邮件发送功能的方法详解



3、 邮件发送可以选择两种方式,下面将分别介绍这两种方式的实现,一种采用该控件封装非常好的邮件直投技术,不需要SMTP账号发送的;一种是普通的SMTP发送方式。当然我们还可以设置更多的参数,例如邮件尾部信息、HTML内容提示、 以及一些发送期间自动拨号的设置操作等。

深入Lumisoft.NET实现邮件发送功能的方法详解



4、 邮件直投技术,通过模拟账户来附加用户的邮件地址(或者可以成为伪装)。其中我填写了一些常用的SMTP服务器的域名,方便在其中构造合乎要求的邮件格式,还可以设置邮件回执通知,如下图所示。 

深入Lumisoft.NET实现邮件发送功能的方法详解



5、 如果是采用普通发送方式,那么就需要制定用户的账号密码等信息,发送的时候,自动从启动获取发件人信息进行批量发送操作。

深入Lumisoft.NET实现邮件发送功能的方法详解



6、 最后体验一下少量邮件的发送效果,发送采用多线程发送,多线程采用比较有名的SmartThreadPool组件,并且发送过程总详细记录其中的日志,供参考。

深入Lumisoft.NET实现邮件发送功能的方法详解

介绍完毕相关的功能效果图,下面我们来分析下主要功能实现的代码:

复制代码 代码如下:


private TimerHelper timer = null;

private void btnSend_Click(object sender, EventArgs e)
        {
            //重置计数变量
            failedItems = 0;
            successItems = 0;

workItemsCompleted = 0;
            workItemsGenerated = 0;

Portal.gc.FailedCount = 0;//重置失败次数

STPStartInfo stpStartInfo = new STPStartInfo();
            stpStartInfo.IdleTimeout = 10;
            stpStartInfo.MaxWorkerThreads = 100;
            stpStartInfo.MinWorkerThreads = 0;
            //stpStartInfo.StartSuspended = true;
            _smartThreadPool = new SmartThreadPool(stpStartInfo);
            _workItemsGroup = _smartThreadPool;

workItemsProducerThread = new Thread(new ThreadStart(this.WorkItemsProducer));
            workItemsProducerThread.IsBackground = true;
            workItemsProducerThread.Start();

RefreshStatusCount();

int intervalRedial = SystemConfig.Default.IntervalRedial * 1000 * 60;
            if (intervalRedial > 0)
            {
                if (timer != null)
                {
                    timer.Stop();
                    timer.Dispose();
                }
                timer = new TimerHelper(intervalRedial,false);
                timer.Execute += new TimerHelper.TimerExecution(timer_Execute);
                timer.Start();
            }
        }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjgxzj.html