Asp.net mvc asp.net mvc异步发送多封主题和正文不同的电子邮件
各位 我想异步发送几封主题和正文不同的电子邮件。这是我的密码 Email.csAsp.net mvc asp.net mvc异步发送多封主题和正文不同的电子邮件,asp.net-mvc,email,asynchronous,Asp.net Mvc,Email,Asynchronous,各位 我想异步发送几封主题和正文不同的电子邮件。这是我的密码 Email.cs public string To; public string CC; public string Subject; public string Host; public string Port; public string Body; public MailMessage mail; public SmtpClient smtp; public void se
public string To;
public string CC;
public string Subject;
public string Host;
public string Port;
public string Body;
public MailMessage mail;
public SmtpClient smtp;
public void send()
{
smtp = new SmtpClient();
mail = new MailMessage();
mail.To.Add(To);
if (this.CC !="" && this.CC !=null) mail.CC.Add(CC);
mail.CC.Add(CCIDBizzMail);
mail.Subject = this.Subject;
mail.From = new MailAddress(From);
mail.IsBodyHtml = true;
smtp.Host = this.SMTPAddress;
mail.Body = this.Body;
smtp.Credentials = new System.Net.NetworkCredential
(this.From, this.Password);
smtp.EnableSsl = false;
smtp.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback);
smtp.SendAsync(mail, null);
}
private void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
{
String token = (string)e.UserState;
if (e.Cancelled)
{
}
if (e.Error != null)
{
}
else
{
mail.Dispose();
smtp.Dispose();
}
}
以下是我发送电子邮件的代码:
Email objEmail = new Email();
objEmail.Subject = "Thank You for Your Order!";
objEmail.Body = "first email";
objEmail.To: "ssss@mail.com"
objEmail.Send();
objEmail.Subject = "Thank You for Your Order!";
objEmail.Body = "second email";
objEmail.To: "tttt@mail.com"
objEmail.Send();
但是,,tttt@mail.com从未收到过电子邮件。我的网站总是发送到ssss@mail.com
您能帮我解决这个问题吗?在这里,您可以尝试发送一封异步类型的电子邮件,而不需要生成新的对象电子邮件 我建议尝试两种想法 每发送一封电子邮件都要更新
{
Email objEmail = new Email();
objEmail.Subject = "Thank You for Your Order!";
objEmail.Body = "first email";
objEmail.To: "ssss@mail.com"
objEmail.Send();
}
{
Email objEmail = new Email();
objEmail.Subject = "Thank You for Your Order!";
objEmail.Body = "second email";
objEmail.To: "tttt@mail.com"
objEmail.Send();
}
或者将电子邮件例程更改为
public string To;
public string CC;
public string Subject;
public string Host;
public string Port;
public string Body;
public void send()
{
using(var smtp = new SmtpClient())
{
using(mail = new MailMessage())
{
mail.To.Add(To);
if (this.CC !="" && this.CC !=null) mail.CC.Add(CC);
mail.CC.Add(CCIDBizzMail);
mail.Subject = this.Subject;
mail.From = new MailAddress(From);
mail.IsBodyHtml = true;
smtp.Host = this.SMTPAddress;
mail.Body = this.Body;
smtp.Credentials = new System.Net.NetworkCredential
(this.From, this.Password);
smtp.EnableSsl = false;
// maybe here you place extra code for the errors
// http://msdn.microsoft.com/en-us/library/swas0fwc.aspx
smtp.Send(mail);
}
}
}
如果电子邮件是使用localhost发送的,并且如果您喜欢发送许多电子邮件,最好以正确的方式发送,而不是异步发送。嗨,aristos,我使用的是我们的邮件服务器而不是localhost。嗯,你的解决方案不能解决问题,系统只发送到第一个电子邮件地址。在我尝试了几次之后,你的解决方案解决了我的问题。非常感谢。