C# 如何向多个收件人发送电子邮件
我想在ASP.NET MVC中向多个收件人发送电子邮件,我发现这很有挑战性。我的代码只发送到列表中的第一个电子邮件地址,但我想一次发送到大约400个收件人。这些收件人的地址存储在SQL Server数据库中。这是我的密码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
[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封电子邮件之后一封失败了会发生什么?你用它做什么