Skip to main content
 首页 » 编程设计

c#之通过 asp.net 向多个用户发送邮件

2024年02月13日29itcoder

我想修改此方法以允许向多个用户发送邮件,而不是一个一个地发送邮件。

我使用下面的方法通过根据用户数量循环发送邮件给大量用户,但是这需要几分钟让用户感觉发生了错误..

public static string sendMail(string to, string title, string subject, string body) 
        { 
            try 
            { 
                MailMessage mail = new MailMessage(); 
                SmtpClient smtp = new SmtpClient(); 
                if (to == "") 
                    to = "----@gmail.com"; 
                MailAddressCollection m = new MailAddressCollection(); 
                m.Add(to); 
                mail.Subject = subject; 
                mail.From = new MailAddress( "----@gmail"); 
                mail.Body = body; 
                mail.IsBodyHtml = true; 
                mail.ReplyTo = new MailAddress("----@gmail"); 
                mail.To.Add(m[0]); 
                smtp.Host = "smtp.gmail.com"; 
                 client.Port = 25; 
                smtp.EnableSsl = true; 
                smtp.Credentials = new System.Net.NetworkCredential("----@gmail", "####"); 
                ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };  
 
                smtp.Send(mail); 
 
                return "done"; 
            } 
            catch (Exception ex) 
            { 
                return ex.Message; 
            } 
        } 

有什么方法可以重构此方法以允许将邮件发送给多个用户。

请您参考如下方法:

public static string sendMail(string[] tolist, string title, string subject, string body) 
        { 
            try 
            { 
                MailMessage mail = new MailMessage(); 
                SmtpClient smtp = new SmtpClient(); 
                if (to == "") 
                    to = "----@gmail.com"; 
                MailAddressCollection m = new MailAddressCollection(); 
 
                //Add this 
                foreach(string to in tolist) 
                { 
                    m.Add(to); 
                } 
                // 
                mail.Subject = subject; 
                mail.From = new MailAddress( "----@gmail"); 
                mail.Body = body; 
                mail.IsBodyHtml = true; 
                mail.ReplyTo = new MailAddress("----@gmail"); 
 
                //And Add this  
                foreach(MailAddress ma in m) 
                { 
                    mail.To.Add(ma); 
                } 
                //or maybe just mail.To=m;  
 
 
                smtp.Host = "smtp.gmail.com"; 
                 client.Port = 25; 
                smtp.EnableSsl = true; 
                smtp.Credentials = new System.Net.NetworkCredential("----@gmail", "####"); 
                ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };  
 
                smtp.Send(mail); 
 
                return "done"; 
            } 
            catch (Exception ex) 
            { 
                return ex.Message; 
            } 
        }