Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向多个收件人发送电子邮件_C#_Asp.net Mvc_Smtpclient - Fatal编程技术网

C# 如何向多个收件人发送电子邮件

C# 如何向多个收件人发送电子邮件,c#,asp.net-mvc,smtpclient,C#,Asp.net Mvc,Smtpclient,我想在ASP.NET MVC中向多个收件人发送电子邮件,我发现这很有挑战性。我的代码只发送到列表中的第一个电子邮件地址,但我想一次发送到大约400个收件人。这些收件人的地址存储在SQL Server数据库中。这是我的密码 [HttpPost] [ValidateInput(false)] public ActionResult SendBulkEmail(EmailAddress ea, HttpPostedFileBase postedFile) { string senderEmai

我想在ASP.NET MVC中向多个收件人发送电子邮件,我发现这很有挑战性。我的代码只发送到列表中的第一个电子邮件地址,但我想一次发送到大约400个收件人。这些收件人的地址存储在SQL Server数据库中。这是我的密码

[HttpPost]
[ValidateInput(false)]
public ActionResult SendBulkEmail(EmailAddress ea, HttpPostedFileBase postedFile)
{
    string senderEmail = System.Configuration.ConfigurationManager.AppSettings["senderEmail"].ToString();
    string senderPassword = System.Configuration.ConfigurationManager.AppSettings["senderPassword"].ToString();

    if (ModelState.IsValid)
    {


        SqlDataReader reader;
        using (SqlConnection cs = new SqlConnection(conn))
        {
            cs.Open();
            SqlCommand cmd = new SqlCommand("SELECT email_address FROM Newsletter", cs);

            ArrayList emailArray = new ArrayList();
            reader = cmd.ExecuteReader();

            myFunctions m = new myFunctions();
            var emailList = m.LoadEmails();
            var emails = new List<AllEmailAddresses>();

            while (reader.Read())
            {
                emails.Add(new AllEmailAddresses
                {
                    EmailAddress = Convert.ToString(reader["email_address"])
                });
            }

            foreach (AllEmailAddresses email in emailList)
            {
                try
                {
                    SmtpClient client = new SmtpClient("mail.chijiokechinedu.com", 25);
                    client.Timeout = 100000;
                    client.DeliveryMethod = SmtpDeliveryMethod.Network;
                    client.UseDefaultCredentials = false;
                    client.Credentials = new NetworkCredential(senderEmail, senderPassword);

                    //MailMessage mailMessage = new MailMessage(senderEmail, email.EmailAddress, ea.EmailSubjest, ea.EmailBody);
                    MailMessage mailMessage = new MailMessage();
                    mailMessage.From = new MailAddress(senderEmail);
                    mailMessage.To.Add(new MailAddress(email.EmailAddress));
                    mailMessage.Subject = ea.EmailSubjest;
                    mailMessage.Body = ea.EmailBody;
                    mailMessage.IsBodyHtml = true;
                    mailMessage.BodyEncoding = UTF8Encoding.UTF8;
                    if (postedFile != null)
                    {
                        string fileName = Path.GetFileName(postedFile.FileName);
                        mailMessage.Attachments.Add(new Attachment(postedFile.InputStream, fileName));
                    }

                    client.Send(mailMessage);
                    return RedirectToAction("EmailSentSuccessfully", "Home");
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }

    }
    else
    {
        ModelState.AddModelError("", "email failed to send!");
    }
    return View(ea);
}
[HttpPost]
[验证输入(错误)]
公共操作结果SendBulkEmail(电子邮件地址ea,HttpPostedFileBase postedFile)
{
字符串senderEmail=System.Configuration.ConfigurationManager.AppSettings[“senderEmail”].ToString();
字符串senderPassword=System.Configuration.ConfigurationManager.AppSettings[“senderPassword”].ToString();
if(ModelState.IsValid)
{
SqlDataReader;
使用(SqlConnection cs=newsqlconnection(conn))
{
cs.Open();
SqlCommand cmd=newsqlcommand(“从时事通讯中选择电子邮件地址”,cs);
ArrayList emailArray=新的ArrayList();
reader=cmd.ExecuteReader();
myFunctions m=新的myFunctions();
var emailList=m.LoadEmails();
var=新列表();
while(reader.Read())
{
电子邮件。添加(新邮件地址)
{
EmailAddress=Convert.ToString(读卡器[“电子邮件地址”])
});
}
foreach(电子邮件列表中的AllEmailAddresses电子邮件)
{
尝试
{
SmtpClient=新的SmtpClient(“mail.chijiokechinedu.com”,25);
client.Timeout=100000;
client.DeliveryMethod=SmtpDeliveryMethod.Network;
client.UseDefaultCredentials=false;
client.Credentials=新的网络凭据(senderEmail、senderPassword);
//MailMessage MailMessage=新邮件(senderEmail、email.EmailAddress、ea.emailsubtest、ea.EmailBody);
MailMessage MailMessage=新建MailMessage();
mailMessage.From=新邮件地址(senderEmail);
mailMessage.To.Add(新邮件地址(email.EmailAddress));
mailMessage.Subject=ea.emailsubject;
mailMessage.Body=ea.EmailBody;
mailMessage.IsBodyHtml=true;
mailMessage.BodyEncoding=UTF8Encoding.UTF8;
if(postedFile!=null)
{
字符串文件名=Path.GetFileName(postedFile.fileName);
mailMessage.Attachments.Add(新附件(postedFile.InputStream,文件名));
}
client.Send(mailMessage);
返回重定向操作(“EmailSent成功”、“主页”);
}
捕获(例外)
{
投
}
}
}
}
其他的
{
AddModelError(“,”电子邮件发送失败!”);
}
返回视图(ea);
}

您需要将重定向(
return RedirectToAction(“EmailSent Successfully”,“Home”);
)移动到该功能的底部,只要您发送第一封将重定向的电子邮件

[HttpPost]
[ValidateInput(false)]
public ActionResult SendBulkEmail(EmailAddress ea, HttpPostedFileBase postedFile)
{
    string senderEmail = System.Configuration.ConfigurationManager.AppSettings["senderEmail"].ToString();
    string senderPassword = System.Configuration.ConfigurationManager.AppSettings["senderPassword"].ToString();

    if (ModelState.IsValid)
    {


        SqlDataReader reader;
        using (SqlConnection cs = new SqlConnection(conn))
        {
            cs.Open();
            SqlCommand cmd = new SqlCommand("SELECT email_address FROM Newsletter", cs);

            ArrayList emailArray = new ArrayList();
            reader = cmd.ExecuteReader();

            myFunctions m = new myFunctions();
            var emailList = m.LoadEmails();
            var emails = new List<AllEmailAddresses>();

            while (reader.Read())
            {
                emails.Add(new AllEmailAddresses
                {
                    EmailAddress = Convert.ToString(reader["email_address"])
                });
            }

            foreach (AllEmailAddresses email in emailList)
            {
                SmtpClient client = new SmtpClient("mail.chijiokechinedu.com", 25);
                client.Timeout = 100000;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Credentials = new NetworkCredential(senderEmail, senderPassword);

                //MailMessage mailMessage = new MailMessage(senderEmail, email.EmailAddress, ea.EmailSubjest, ea.EmailBody);
                MailMessage mailMessage = new MailMessage();
                mailMessage.From = new MailAddress(senderEmail);
                mailMessage.To.Add(new MailAddress(email.EmailAddress));
                mailMessage.Subject = ea.EmailSubjest;
                mailMessage.Body = ea.EmailBody;
                mailMessage.IsBodyHtml = true;
                mailMessage.BodyEncoding = UTF8Encoding.UTF8;
                if (postedFile != null)
                {
                    string fileName = Path.GetFileName(postedFile.FileName);
                    mailMessage.Attachments.Add(new Attachment(postedFile.InputStream, fileName));
                }

                client.Send(mailMessage);
            }

            // ** redirect after sending all the emails
            return RedirectToAction("EmailSentSuccessfully", "Home");
        }

    }
    else
    {
        ModelState.AddModelError("", "email failed to send!");
    }
    return View(ea);
}
[HttpPost]
[验证输入(错误)]
公共操作结果SendBulkEmail(电子邮件地址ea,HttpPostedFileBase postedFile)
{
字符串senderEmail=System.Configuration.ConfigurationManager.AppSettings[“senderEmail”].ToString();
字符串senderPassword=System.Configuration.ConfigurationManager.AppSettings[“senderPassword”].ToString();
if(ModelState.IsValid)
{
SqlDataReader;
使用(SqlConnection cs=newsqlconnection(conn))
{
cs.Open();
SqlCommand cmd=newsqlcommand(“从时事通讯中选择电子邮件地址”,cs);
ArrayList emailArray=新的ArrayList();
reader=cmd.ExecuteReader();
myFunctions m=新的myFunctions();
var emailList=m.LoadEmails();
var=新列表();
while(reader.Read())
{
电子邮件。添加(新邮件地址)
{
EmailAddress=Convert.ToString(读卡器[“电子邮件地址”])
});
}
foreach(电子邮件列表中的AllEmailAddresses电子邮件)
{
SmtpClient=新的SmtpClient(“mail.chijiokechinedu.com”,25);
client.Timeout=100000;
client.DeliveryMethod=SmtpDeliveryMethod.Network;
client.UseDefaultCredentials=false;
client.Credentials=新的网络凭据(senderEmail、senderPassword);
//MailMessage MailMessage=新邮件(senderEmail、email.EmailAddress、ea.emailsubtest、ea.EmailBody);
MailMessage MailMessage=新建MailMessage();
mailMessage.From=新邮件地址(senderEmail);
mailMessage.To.Add(新邮件地址(email.EmailAddress));
mailMessage.Subject=ea.emailsubject;
mailMessage.Body=ea.EmailBody;
mailMessage.IsBodyHtml=true;
mailMessage.BodyEncoding=UTF8Encoding.UTF8;
if(postedFile!=null)
{
字符串文件名=Path.GetFileName(postedFile.fileName);
mailMessage.Attachments.Add(新附件(postedFile.InputStream,文件名));
}
client.Send(mailMessage);
}
//**发送所有电子邮件后重定向
返回重定向操作(“EmailSent成功”、“主页”);
}
}
其他的
{
AddModelError(“,”电子邮件发送失败!”);
}
返回视图(ea);
}
但是,由于以下问题,您可能希望重新设计您的方法并将其放在队列的后面:

1) 如果在10封电子邮件之后一封失败了会发生什么?你用它做什么