C#使用System.Threading发送SMTP

我开发了一个主要使用SMTP发送电子邮件的应用程序.一个一个地发送消息很好,但是我希望加快这个过程.我创建了SmtpClient的多个实例以及消息以避免彼此之间的冲突.由于单独的实例,我假设在多个线程上执行.Send()会很好.但是,单独使用我的线程代码不起作用,因为我无法使用此代码一个线程上发送一封电子邮件.我只是收到一个模糊的“发送邮件失败”例外.我将发布有效的代码,以及不起作用的Thread.有人可以分享他们认为可能是原因吗?

注意我目前不打算使用较新的异步功能,而是利用Thread

工作宣言和方法电话:

var SMTP = new SmtpClient
    {
        Host = txtBxSenderHost.Text,Port = 587,EnableSsl = true,DeliveryMethod = SmtpDeliveryMethod.Network,UseDefaultCredentials = false,Credentials = new NetworkCredential(strSenderAddress,strSenderPassword)
    };

using (var message = new MailMessage(senderAdrress,toAddress)
    {
        Subject = strSubject,Body = strBody
    })

    {
        SMTP.Send(message);
    }

NOT Working Thread声明和方法调用

var SMTP = new SmtpClient
    {
        Host = txtBxSenderHost.Text,Body = strBody
    })

    {
        Thread T1 = new Thread(delegate() { SMTP.Send(message); } );
        T1.Start();
    }

解决方法

解决了:
var SMTP = new SmtpClient
        {
            Host = txtBxSenderHost.Text,strSenderPassword)
        };

        Thread T1 = new Thread(delegate()
        {
            using (var message = new MailMessage(senderAdrress,toAddress)
            {
                Subject = strSubject,Body = strBody
            })
            {
                {
                    SMTP.Send(message);
                }
            }
        });

        T1.Start();

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...