asp.net mvc отправляет несколько электронных писем с различной темой и телом асинхронно - PullRequest
0 голосов
/ 26 февраля 2012

Люди,

Я хотел послать несколько писем с разными темами и телом асинхронно. вот мой код

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

Можете ли вы помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 26 февраля 2012

Здесь вы пытаетесь отправить электронное письмо асинхронного типа без создания нового объекта. Электронная почта.

Предлагаю попробовать две мысли.

Создать новое при каждой отправке электронной почты

{
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();
}

Или измените подпрограмму Email на

  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 и если вы хотите отправить много писем, лучше отправлять их правильно, а не асинхронно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...