【问题标题】:sending mail to multiple users through asp.net通过asp.net向多个用户发送邮件
【发布时间】:2013-09-03 11:09:04
【问题描述】:

我想修改这个方法,允许将邮件发送给多个用户而不是一个一个。

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

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;
            }
        }

有没有办法重构这个方法以允许将邮件发送给多个用户。

【问题讨论】:

    标签: c# asp.net performance email gmail


    【解决方案1】:
    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;
                }
            }
    

    【讨论】:

    • @just_name 说你要发邮件到10个地址,我相信你最初的方式会调用sendMail 10次,现在它只会调用一次。
    • 我将发送到大约 500 个地址
    • @just_name 所以你肯定需要把你的代码改成我上面提供的东西。
    猜你喜欢
    • 2015-02-25
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2015-12-18
    • 1970-01-01
    • 2012-06-11
    • 2014-06-05
    相关资源
    最近更新 更多