none
Enviar mais de um email C# Asp.Net RRS feed

  • Pergunta

  • Bom dia PessoALL.

    Preciso enviar 2 emails seguidos em um bloco de codigo:

    string email_send = "Email um";
    
    MailMessage omail = new MailMessage();
              omail.IsBodyHtml = true;
              omail.From = new MailAddress("eu@eu.com");
              omail.To.Add("outro@outro.com");
              omail.Subject = "Titulo";
              omail.Body = email_send;
              SmtpClient osmtp = new SmtpClient(HttpContext.Current.Session["smtp"].ToString());
              osmtp.Credentials = new NetworkCredential(HttpContext.Current.Session["user"].ToString(), HttpContext.Current.Session["pass"].ToString());
              osmtp.Send(omail);
              omail.Dispose();
    
              
    
              string email_cliente = "Email dois";
    
              MailMessage omail1 = new MailMessage();
              omail1.IsBodyHtml = true;
              omail1.From = new MailAddress("outro@outro.com");
              omail1.To.Add("eu@eu.com");
              omail1.Subject = "Titlo";
              omail1.Body = email_cliente;
              SmtpClient osmtp1 = new SmtpClient(HttpContext.Current.Session["smtp"].ToString());
              osmtp1.Credentials = new NetworkCredential(HttpContext.Current.Session["user"].ToString(), HttpContext.Current.Session["pass"].ToString());
              osmtp1.Send(omail1);
              omail1.Dispose();
    

     debugando o codigo, ele passa por todas as linhas e não dá nenhum tipo de erro, porém ele envia o primeiro email sem problemas, mas o segundo email ele não envia e não dá sinal de erro nem nada... simplesmente ignora, eu acho.

    Se alguem puder dar uma luz... rs

     

    Desde já, muito obrigado.

    quarta-feira, 30 de março de 2011 13:13

Respostas

  • Os dois emails enviados são diferentes ou idênticos??

    se forem idênticos você pode fazer assim

         MailMessage omail = new MailMessage();
         omail.IsBodyHtml = true;
         omail.From = new MailAddress("eu@eu.com");
         omail.To.Add("email1@outro.com");
         omail.To.Add("email2@outro.com");
         omail.Subject = "Titulo";
         omail.Body = email_send;
         SmtpClient osmtp = new SmtpClient(HttpContext.Current.Session["smtp"].ToString());
         osmtp.Credentials = new NetworkCredential(HttpContext.Current.Session["user"].ToString(), HttpContext.Current.Session["pass"].ToString());
         osmtp.Send(omail);
         omail.Dispose();
    

    Se forem diferentes você pode criar 2 metódos de envio

    exemplo

    public void email1()
    
    {
    string email_send = "Email um";
    
    MailMessage omail = new MailMessage();
         omail.IsBodyHtml = true;
         omail.From = new MailAddress("eu@eu.com");
         omail.To.Add("outro@outro.com");
         omail.Subject = "Titulo";
         omail.Body = email_send;
         SmtpClient osmtp = new SmtpClient(HttpContext.Current.Session["smtp"].ToString());
         osmtp.Credentials = new NetworkCredential(HttpContext.Current.Session["user"].ToString(), HttpContext.Current.Session["pass"].ToString());
         osmtp.Send(omail);
         omail.Dispose();
    }
    
    public void email2()
    
    {
    string email_cliente = "Email dois";
    
         MailMessage omail1 = new MailMessage();
         omail1.IsBodyHtml = true;
         omail1.From = new MailAddress("outro@outro.com");
         omail1.To.Add("eu@eu.com");
         omail1.Subject = "Titlo";
         omail1.Body = email_cliente;
         SmtpClient osmtp1 = new SmtpClient(HttpContext.Current.Session["smtp"].ToString());
         osmtp1.Credentials = new NetworkCredential(HttpContext.Current.Session["user"].ToString(), HttpContext.Current.Session["pass"].ToString());
         osmtp1.Send(omail1);
         omail1.Dispose();
    }

    e chamar apenas os metodos ...

    se quiser enviar para mais de dois vc pode usar um datareader

    SqlConnection conn = //Sua Conection
            conn.Open();
            SqlCommand cmd = new SqlCommand("Select * from tabelasdeEmails;", conn);
            SqlDataReader reader = cmd.ExecuteReader();
    
            while (reader.Read())
            {
              //["email"] Nome do campo da tabela a ser carregado
              mailMessage.To.Add(reader["email"].ToString());
            }
            reader.Close();
            conn.Close();
    

    Espero que ajude

     Abraço	

     


    Se for útil marcar como resposta Para que outros Aproveitem
    • Sugerido como Resposta Programero quinta-feira, 31 de março de 2011 19:39
    • Marcado como Resposta Harley Araujo quinta-feira, 7 de abril de 2011 13:42
    quarta-feira, 30 de março de 2011 16:17
  • Aconselho o amigo a enviar um email por vez, utilizando um FOR ou FOREACH, para evitar que os provedores de email barrem os emails enviados por você, por achar que se trata de SPAM.

     

    Espero ter ajudado.

     

    Abs




    Luiz Carlos Pereira da Silva  

    Analista Desenvolvedor


    WILL 
    IT Soluções e Tecnologia em Informática LTDA

    • Marcado como Resposta Harley Araujo quinta-feira, 7 de abril de 2011 13:42
    quarta-feira, 30 de março de 2011 22:38

Todas as Respostas

  • Uma vez acontecia isto comigo, mas eu disparava uns 40 emails.

    Depois de muito procurar, descobri que o anti virus estava bloqueando a aplicação.

    quarta-feira, 30 de março de 2011 13:27
  • Andre, os e-mails utilizados tanto para envio e recebimento estão corretos e ativos? São do mesmo dominio? Usam as configurações corretas de smtp, porta e autenticação?

     

     

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    quarta-feira, 30 de março de 2011 14:38
  • Luiz, sim os emails estão ativos e corretos, mas não são do mesmo dominio.

    por exemplo, tenho o email eu@eu.com.br, ele é do dominio que passo no SmtpClient, este eu uso no primeiro bloco como Email.To e no segundo bloco, uso ele como Email.From.. o outro email utilizado não é do mesmo dominio, ele varia a cada passagem pelo codigo...

    Cogitei a opção do servidor não enviar o email por ele achar que é spam...

    O que você acha?

    quarta-feira, 30 de março de 2011 14:47
  • André no meu post acima era exatamente isto.

    O antivirus achava que era spam.

    quarta-feira, 30 de março de 2011 14:48
  • André, mas no segundo envio que você usa o outr@outro.com.br  você deve usar as configurações de SMTP para outro.com.br, se você utilizar as mesmas do dominio eu@eu.com.br o servidor SMTP rejeitará sua mensagem.

    Pode ser SPAM sim, desde que as configurações de envio estejam corretas para ambos dominios.

     


    Abraço

    Estevam

    **** Se a reposta foi útil, então não esqueça de marca-lá. ***
    quarta-feira, 30 de março de 2011 14:52
  • Os dois emails enviados são diferentes ou idênticos??

    se forem idênticos você pode fazer assim

         MailMessage omail = new MailMessage();
         omail.IsBodyHtml = true;
         omail.From = new MailAddress("eu@eu.com");
         omail.To.Add("email1@outro.com");
         omail.To.Add("email2@outro.com");
         omail.Subject = "Titulo";
         omail.Body = email_send;
         SmtpClient osmtp = new SmtpClient(HttpContext.Current.Session["smtp"].ToString());
         osmtp.Credentials = new NetworkCredential(HttpContext.Current.Session["user"].ToString(), HttpContext.Current.Session["pass"].ToString());
         osmtp.Send(omail);
         omail.Dispose();
    

    Se forem diferentes você pode criar 2 metódos de envio

    exemplo

    public void email1()
    
    {
    string email_send = "Email um";
    
    MailMessage omail = new MailMessage();
         omail.IsBodyHtml = true;
         omail.From = new MailAddress("eu@eu.com");
         omail.To.Add("outro@outro.com");
         omail.Subject = "Titulo";
         omail.Body = email_send;
         SmtpClient osmtp = new SmtpClient(HttpContext.Current.Session["smtp"].ToString());
         osmtp.Credentials = new NetworkCredential(HttpContext.Current.Session["user"].ToString(), HttpContext.Current.Session["pass"].ToString());
         osmtp.Send(omail);
         omail.Dispose();
    }
    
    public void email2()
    
    {
    string email_cliente = "Email dois";
    
         MailMessage omail1 = new MailMessage();
         omail1.IsBodyHtml = true;
         omail1.From = new MailAddress("outro@outro.com");
         omail1.To.Add("eu@eu.com");
         omail1.Subject = "Titlo";
         omail1.Body = email_cliente;
         SmtpClient osmtp1 = new SmtpClient(HttpContext.Current.Session["smtp"].ToString());
         osmtp1.Credentials = new NetworkCredential(HttpContext.Current.Session["user"].ToString(), HttpContext.Current.Session["pass"].ToString());
         osmtp1.Send(omail1);
         omail1.Dispose();
    }

    e chamar apenas os metodos ...

    se quiser enviar para mais de dois vc pode usar um datareader

    SqlConnection conn = //Sua Conection
            conn.Open();
            SqlCommand cmd = new SqlCommand("Select * from tabelasdeEmails;", conn);
            SqlDataReader reader = cmd.ExecuteReader();
    
            while (reader.Read())
            {
              //["email"] Nome do campo da tabela a ser carregado
              mailMessage.To.Add(reader["email"].ToString());
            }
            reader.Close();
            conn.Close();
    

    Espero que ajude

     Abraço	

     


    Se for útil marcar como resposta Para que outros Aproveitem
    • Sugerido como Resposta Programero quinta-feira, 31 de março de 2011 19:39
    • Marcado como Resposta Harley Araujo quinta-feira, 7 de abril de 2011 13:42
    quarta-feira, 30 de março de 2011 16:17
  • Aconselho o amigo a enviar um email por vez, utilizando um FOR ou FOREACH, para evitar que os provedores de email barrem os emails enviados por você, por achar que se trata de SPAM.

     

    Espero ter ajudado.

     

    Abs




    Luiz Carlos Pereira da Silva  

    Analista Desenvolvedor


    WILL 
    IT Soluções e Tecnologia em Informática LTDA

    • Marcado como Resposta Harley Araujo quinta-feira, 7 de abril de 2011 13:42
    quarta-feira, 30 de março de 2011 22:38