none
Enviando email através de um WebApplication RRS feed

  • Pergunta

  • Olá, 

    Alguém tem algum tutorial de envio de email através de um WebApplication, 

    Vi alguns na net e aqui também, mas nenhum deles funcionou....

    Valeu..

    segunda-feira, 12 de novembro de 2012 18:05

Respostas

  • Tenho na minha aplicação um método que efetua o envio dos e-mails.

    No Web.config coloquei as configurações do e-mail

      <appSettings>        
        <add key="ServidorSMTP" value="smtp.exemplo.com"/>
        <add key="UsuarioEmail" value="usuarioemail"/>
        <add key="SenhaEmail" value="senha"/>
        <add key="MailFrom" value="teste@teste.com"/>  
      </appSettings>  

    E na Web Application eu fiz o seguinte método

            public string EnviarEmail(string arrayDest, string Assunto, string Corpo)
            {
                try
                {
    
                    //tratando os e-mails recebidos
                    Array Email = arrayDest.Split(new char[] { ';' });
    
                    string Servidor_SMTP = ConfigurationManager.AppSettings["ServidorSMTP"];
                    string Usuario_Email = ConfigurationManager.AppSettings["UsuarioEmail"];
                    string Senha_Email = ConfigurationManager.AppSettings["SenhaEmail"];
                    string UsuarioFrom = ConfigurationManager.AppSettings["MailFrom"];
    
                    System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(Servidor_SMTP);
                    smtpClient.Credentials = new System.Net.NetworkCredential(Usuario_Email, Senha_Email);
    
                    //Define o tempo para a conexao com o servidor SMTP expirar
                    smtpClient.Timeout = 600000;
    
                    MailMessage Mensagem = new MailMessage();
                    Mensagem.From = new MailAddress(UsuarioFrom);
                    Mensagem.Subject = Assunto;
                    Mensagem.Body = Corpo;
                    Mensagem.IsBodyHtml = true;
    
                    for (int i = 0; i < Email.Length; i++)
                    {
                        Mensagem.To.Add(Email.GetValue(i).ToString());
                    }
    
                    smtpClient.Send(Mensagem);
                    Mensagem.Dispose();
                    return "E-mail Enviado com sucesso!";
                }
                catch
                {
                    return "Ocorreu um erro no Enavio do E-mail!";
                }
            }


    Se a sugestão resolver o problema, favor marcar como Resposta.

    • Marcado como Resposta Marcos Bazilio quarta-feira, 14 de novembro de 2012 10:53
    terça-feira, 13 de novembro de 2012 13:49

Todas as Respostas

  • Olá Marcos.

    O que não funcionou? Recebeu algum erro. Lembrando que para enviar e-mails localmente voce precisa configuar seu servidor de SMTP com o seu ip local.

    ASP.NET 2.0 - Configurando o servidor SMTP no IIS

    Abraços.


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    segunda-feira, 12 de novembro de 2012 19:05
  • Ah, então é isso.... 

    a mensagem que retorna é :

    "Foi feita uma tentativa de acesso a um soquete de uma maneira que é proibida pelas permissões de acesso xx.xx.xxx.xxx:xx"

    Há alguma forma de testar esse envio ? Para que eu possa publicar esse sistema sem ter maiores problemas...?

    Valeu Washington.

    segunda-feira, 12 de novembro de 2012 19:10
  • Marcos,

    Se voce publicar o sistema em um Servidor Web na Internet (atraves de algum provedor como Locaweb ou outro qualquer) muito provavelmente não terá problemas com envio de e-mails, uma vez que voce receberá o endereço SMTP e usuário e senha, se for o caso, para enviar e-mails pela sua aplicação.

    Caso voce esteja publicando em um ambiente corporativo, voce precisa verificar com os administradores do servidor, qual o servidor de SMTP que voce deve utilizar.

    Caso esteja publicando localmente (em sua máquina) e disponibilizando esse enderço para outras pessoas, voce deve configurar o SMTP manualmente. Neste caso, o ideal é usar algum serviço de SMTP.

    Qual o seu cenário?

    Abraços.


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    terça-feira, 13 de novembro de 2012 11:33
  • Oi...

    Estou desenvolvendo localmente..., mas este sistema será publicado posteriormente.... 

    Estou colocando o endereço smtp que utilizo no meu email..... tanto quanto porta etc.... 

    Mesmo assim não funciona

    terça-feira, 13 de novembro de 2012 11:45
  • Tenho na minha aplicação um método que efetua o envio dos e-mails.

    No Web.config coloquei as configurações do e-mail

      <appSettings>        
        <add key="ServidorSMTP" value="smtp.exemplo.com"/>
        <add key="UsuarioEmail" value="usuarioemail"/>
        <add key="SenhaEmail" value="senha"/>
        <add key="MailFrom" value="teste@teste.com"/>  
      </appSettings>  

    E na Web Application eu fiz o seguinte método

            public string EnviarEmail(string arrayDest, string Assunto, string Corpo)
            {
                try
                {
    
                    //tratando os e-mails recebidos
                    Array Email = arrayDest.Split(new char[] { ';' });
    
                    string Servidor_SMTP = ConfigurationManager.AppSettings["ServidorSMTP"];
                    string Usuario_Email = ConfigurationManager.AppSettings["UsuarioEmail"];
                    string Senha_Email = ConfigurationManager.AppSettings["SenhaEmail"];
                    string UsuarioFrom = ConfigurationManager.AppSettings["MailFrom"];
    
                    System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(Servidor_SMTP);
                    smtpClient.Credentials = new System.Net.NetworkCredential(Usuario_Email, Senha_Email);
    
                    //Define o tempo para a conexao com o servidor SMTP expirar
                    smtpClient.Timeout = 600000;
    
                    MailMessage Mensagem = new MailMessage();
                    Mensagem.From = new MailAddress(UsuarioFrom);
                    Mensagem.Subject = Assunto;
                    Mensagem.Body = Corpo;
                    Mensagem.IsBodyHtml = true;
    
                    for (int i = 0; i < Email.Length; i++)
                    {
                        Mensagem.To.Add(Email.GetValue(i).ToString());
                    }
    
                    smtpClient.Send(Mensagem);
                    Mensagem.Dispose();
                    return "E-mail Enviado com sucesso!";
                }
                catch
                {
                    return "Ocorreu um erro no Enavio do E-mail!";
                }
            }


    Se a sugestão resolver o problema, favor marcar como Resposta.

    • Marcado como Resposta Marcos Bazilio quarta-feira, 14 de novembro de 2012 10:53
    terça-feira, 13 de novembro de 2012 13:49
  • Esta com erro no  ConfigurationManager
    terça-feira, 13 de novembro de 2012 14:48
  • Qual ?

    As importações (using) que usei foram

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Configuration;
    using System.Net.Mail;
    using System.Net.Mime;


    Se a sugestão resolver o problema, favor marcar como Resposta.

    terça-feira, 13 de novembro de 2012 14:51
  • Não aparece erro algum... mas as mensagens não chegam....

    eu só preciso enviar... não receber.. então tirei a primeira parte do teu código....

     protected void Button1_Click(object sender, EventArgs e)
            {
                try
                {
    
                    //tratando os e-mails recebidos
                   // AQUI EU TIREI....
    
                    System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient("smtp.meusmtp.com.br");
                    smtpClient.Credentials = new System.Net.NetworkCredential("usuario", "senha");
    
                    //Define o tempo para a conexao com o servidor SMTP expirar
                    smtpClient.Timeout = 600000;
    
                    MailMessage Mensagem = new MailMessage();
                    Mensagem.From = new MailAddress("meuemail@meuemail.com.br");
                    Mensagem.Subject = "Assunto";
                    Mensagem.Body = "Corpo";
                    Mensagem.IsBodyHtml = true;
    
                   
    
                    smtpClient.Send(Mensagem);
                
                }
                catch(Exception ex)
                {
                    lblMensagem.Text = ex.Message;
                }
    
    
            }

    terça-feira, 13 de novembro de 2012 15:07
  • Esta com erro no  ConfigurationManager

     No seu projeto, em References, adicione a referencia da DLL System.Configuration.

    No seu código .cs, adicione este using:

    using System.Configuration;

    Como voce está testando localmente, o artigo que te passei de como configurar o SMTP local, dá as dicas de como configurar isso no seu IIS. Após a publicação no seu servidor Web, acredito que voce não terá mais este tipo de problema, bastando informar em sua aplicação os dados do SMTP que o seu provedor irá te passar.

    Abraços.


    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    terça-feira, 13 de novembro de 2012 15:09
  • Posso ter exposto mal o comentário no código.

    Essa linha que você tirou, era os destinatários, ou seja, para quem você está enviando o e-mail, portanto deve deixá-la, ou, uma segunda opção, seria deixar sem essa linha, porém você terá que adicionar a linha 

    Mensagem.To.Add("email@destino.com");

    antes de enviar.


    Se a sugestão resolver o problema, favor marcar como Resposta.


    • Editado Lucas_Santos terça-feira, 13 de novembro de 2012 15:15
    terça-feira, 13 de novembro de 2012 15:13
  • do jeito que lhe passei o código adicionando a linha Messagem.To.Add ele retorna a exception 

    Foi feita uma tentativa de acesso a um soquete de uma maneira que é proibida pelas permissões de acesso xx.xx.xxx.xxx:xx

    Eu utilizo, smtp, usuario e senha... que estão funcionando no meu email....

    terça-feira, 13 de novembro de 2012 15:18
  • Em algum momento você usa Socket?

    Desabilite seu anti-vírus por um momento, apenas para rodar sua aplicação. Seu anti-vírus pode bloquear a porta de comunicação, entendo que trata-se de um vírus/worm. Isso inclui o Firewall, desabilite-o também apenas para um teste.


    Se a sugestão resolver o problema, favor marcar como Resposta.



    • Editado Lucas_Santos terça-feira, 13 de novembro de 2012 15:43
    terça-feira, 13 de novembro de 2012 15:40
  • ainda persiste.... o Firewall já fica desabilitado... 

    terça-feira, 13 de novembro de 2012 16:13
  • Eu não estou utilizando Socket.... devo usar?
    terça-feira, 13 de novembro de 2012 16:21
  • Até anti vírus ?

    Não há necessidade de socket para isso.


    Se a sugestão resolver o problema, favor marcar como Resposta.


    • Editado Lucas_Santos terça-feira, 13 de novembro de 2012 16:25
    terça-feira, 13 de novembro de 2012 16:24
  • É isso... é o anti vírus... só que o anti vírus que nós usamos é online... o mcAfee.. não tenho como desabilita-lo
    terça-feira, 13 de novembro de 2012 16:35
  • Há um artigo em inglês na qual pode lhe instruir como configurar o McAfee para aceitar conexões na porta 25 (SMTP)


    Se a sugestão resolver o problema, favor marcar como Resposta.


    • Editado Lucas_Santos terça-feira, 13 de novembro de 2012 16:39
    terça-feira, 13 de novembro de 2012 16:38
  • Lucas valeu.... só que não tenho acesso ao anti-vírus... não consigo desabilita-lo 


    terça-feira, 13 de novembro de 2012 17:17
  • Olá Lucas...

    Fiz o teste em outra máquina... e funcionou..

    Era o anti-vírus mesmo...., Brigadão

    quarta-feira, 14 de novembro de 2012 10:54