首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 自代mail发送邮件的有关问题

2012-01-26 
C# 自代mail发送邮件的问题privatevoidtimeSendMsg_Tick(objectsender,EventArgse){stringtopicstring.Em

C# 自代mail发送邮件的问题
private   void   timeSendMsg_Tick(object   sender,   EventArgs   e)
                {
                        string   topic   =   string.Empty;
                        string   content   =   string.Empty;
                        string   email=   string.Empty;
                        foreach   (DataGridViewRow   row   in   gvMain.Rows)
                        {
                                topic   =   row.Cells[ "topic "].Value.ToString();
                                content   =   row.Cells[ "content "].Value.ToString();
                                MailSender.sendMail(topic,   content,   email);
                                MessageDAO.updateSendFlag(row.Cells[ "ID "].Value.ToString());
                        }
                        lbMessage.Items.Add( "发送成功 "   +   gvMain.Rows.Count   +   "条 ");
                        bindData();        
                }
public   static   bool   sendMail(string   strSubject,string   content,string   eMailAddress)   {
                if   (eMailAddress.Length   <   2)
                {
                        return   false;
                }
                bool   hasSend   =   true;
                string   strSMTPServer   =   ConfigurationSettings.AppSettings[ "smtpAddress "];
                string   strSMTPUser   =   ConfigurationSettings.AppSettings[ "smtpUser "];
                string   strSMTPPassword   =   ConfigurationSettings.AppSettings[ "smtpPassword "];
                string   strFrom   =   strSMTPUser;
                SmtpClient   client   =   new   SmtpClient(strSMTPServer);
                client.Credentials   =   new   NetworkCredential(strFrom,   strSMTPPassword);
                client.DeliveryMethod   =   SmtpDeliveryMethod.Network;
                MailMessage   message   =   new   MailMessage();


                message.From   =   new   MailAddress(strFrom);
                message.Subject   =   strSubject;
                message.Body   =   content;
                message.To.Add(eMailAddress);
                message.SubjectEncoding   =   Encoding.UTF8;
                message.BodyEncoding   =   Encoding.UTF8;
                message.IsBodyHtml   =   true;
                try
                {
                        client.Send(message);
                }
                catch   (Exception   ex)
                {
                        Console.WriteLine(ex.ToString());
                        return   false;
                }
                return   hasSend;
        }
我在timer控件中设置了每天发送一次,如果发送信息少的话     比如100条以下发送很正常       超过300条的程序就会没有响应了     这里是不是需要用到线程方面的知识啊     请各位指教啊     分不够可以加

[解决办法]
在foreach 循环中作适当的延时试试,
如果可能,还是用线程好
[解决办法]
可以将Thread.Sleep(50);Application.DoEvent();加入foreach语句中做适当延迟
[解决办法]
我觉得这可能是smtp服务器的问题,和程序无关?
lz用的smtp服务器是自己配的?
[解决办法]
建议你使用线程发送邮件。

发送邮件的过程中,连接smtp服务器是一件费时的工作。你的过程中还有连接数据库服务器的代码,这些都会引起主线程忙碌。

你可以在单独的线程中运行你在timer_tick过程中的代码,当邮件发完后,通知一下主线程即可。

热点排行