Asp.net mvc asp.net mvc异步发送多封主题和正文不同的电子邮件

Asp.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

各位

我想异步发送几封主题和正文不同的电子邮件。这是我的密码

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 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。嗯,你的解决方案不能解决问题,系统只发送到第一个电子邮件地址。在我尝试了几次之后,你的解决方案解决了我的问题。非常感谢。