none
Envio de Email por aplicação RRS feed

  • Pergunta

  • Estou implementando uma funcionalidade de envio de e-mail automaticamente através de uma aplicacao web. eu testei alguns codigos em uma aplicacao windows forms e funcionou. o codigo é o abaixo:

    'montando a mensagem

    mailMsgMensagem = New MailMessage("info@empresa.com", "teste@empresa.com" )

    mailMsgMensagem.Subject = "Mensagem do Sistema"

    mailMsgMensagem.Body = strMensagem.ToString

    'enviando a mensagem

    ClientSMTP = New SmtpClient("Servidor")

    ClientSMTP.UseDefaultCredentials = True

    ClientSMTP.Send(mailMsgMensagem)

    A questão é a seguinte: na minha aplicação web, este mesmo codigo nao funciona, e eu gostaria de saber se existe algum problema no mesmo ou se tenho que fazer alguma adaptacao para que funcione no Asp.NET

    []s  - Flavio

     

    sexta-feira, 7 de julho de 2006 16:18

Respostas

  • Flávio, se for o que estou pensando, seu servidor de SMTP exige autenticação para envio de e-mails externos com relação ao domínio, ou se seja, tem que ser um e-mail registrado no servidor de e-mails. Caso contrário, só envia autenticado.

    Você deve tirar a linha DEFAULTCREDENTIALS e efetuar a autenticação.

    Você pode fazer a autenticação da seguinte forma:

    ex.:
    Dim sm As New SmtpClient(Host, Port)
                With sm
                    .EnableSsl = True
                    .Credentials = New NetworkCredential("usuario", "senha")
                End With

     

     

    Espero ter ajudado!

    segunda-feira, 10 de julho de 2006 18:28
  • Consegui fazer o envio do e-mail.

    o codigo ficou da seguinte forma:

     

    'montando o arquivo da mensagem que ser  enviada

    mailMsgMensagem = New MailMessage(user@server.dominio, teste@teste.com.br)

    mailMsgMensagem.Subject = "Mensagem do Sistema"

    mailMsgMensagem.Body = strMensagem.ToString

    'selecionando as credenciais para o envio da mensagem

    Dim MailCredential As New System.Net.NetworkCredential

    MailCredential.Domain = "Dominio"

    MailCredential.Password = "Senha Dominio"

    MailCredential.UserName = "Usuario"

    'Selecionando o servidor SMTP

    ClientSMTP = New SmtpClient("Servidor SMTP")

    ClientSMTP.Credentials = MailCredential

    'enviando a mensagem

    ClientSMTP.Send(mailMsgMensagem)

     

    caso alguem passe por este problema, a solucao acima ira atender as necessidades... e aproveito para agradecer ao Fabiano Santiago pela atencao e respostas...

    []s - Flavio

    segunda-feira, 10 de julho de 2006 18:35

Todas as Respostas

  • Flávio,

    Você está utilizando qual namespace?

    System.Web.Mail (defasada)[1.1]
    ou
    System.Net.Mail? (só no 2.0)

     

     

     

     

    sexta-feira, 7 de julho de 2006 17:15
  • estou utilizando o system.net.mail

    é uma aplicacao Asp.NET 2.0

     

    []s

    Flavio

    sexta-feira, 7 de julho de 2006 19:34
  • Flávio,

    Não estou vendo nada de errado no seu código, é isso mesmo, só fez de uma forma diferente.

    Mas tenta tirar essa linha?

    ClientSMTP.UseDefaultCredentials = True

     

     

     

    sexta-feira, 7 de julho de 2006 20:44
  • se eu retirar esta linha, eu nao consigo autenticar no meu servidor de exchange....

    ma verdade, o que está acontecendo é isso. ja pequei quase todos os exemplos do msdn e nao consigo autenticar no servidor....

    se vc tiver alguma sugestao...

     

    Atenciosamente

    Flavio

    sábado, 8 de julho de 2006 15:15
  • Flávio,

    Por favor,

    Posta o erro ai pra gente.

     

     

     

     

    domingo, 9 de julho de 2006 03:27
  • O erro que está sendo exibido é o seguite:

    Mailbox unavailable. The server response was: 5.7.1 Unable to relay for flavio@amplaconsultoria.com.br

    mas eu fiz alguns testes e percebi uma coisa:

    se eu coloco o "to" da minha mensagem como o nome de usuario do dominio (user@domain.net) é enviada a mensagem. mas tem um porem, o exchange está configurado o smtp externo e nao o nome de usuario da rede... nao sei se soube explicar direito entao, qualquer coisa poste ou me envie...

    Flavio.

    segunda-feira, 10 de julho de 2006 12:26
  • Flávio, se for o que estou pensando, seu servidor de SMTP exige autenticação para envio de e-mails externos com relação ao domínio, ou se seja, tem que ser um e-mail registrado no servidor de e-mails. Caso contrário, só envia autenticado.

    Você deve tirar a linha DEFAULTCREDENTIALS e efetuar a autenticação.

    Você pode fazer a autenticação da seguinte forma:

    ex.:
    Dim sm As New SmtpClient(Host, Port)
                With sm
                    .EnableSsl = True
                    .Credentials = New NetworkCredential("usuario", "senha")
                End With

     

     

    Espero ter ajudado!

    segunda-feira, 10 de julho de 2006 18:28
  • Consegui fazer o envio do e-mail.

    o codigo ficou da seguinte forma:

     

    'montando o arquivo da mensagem que ser  enviada

    mailMsgMensagem = New MailMessage(user@server.dominio, teste@teste.com.br)

    mailMsgMensagem.Subject = "Mensagem do Sistema"

    mailMsgMensagem.Body = strMensagem.ToString

    'selecionando as credenciais para o envio da mensagem

    Dim MailCredential As New System.Net.NetworkCredential

    MailCredential.Domain = "Dominio"

    MailCredential.Password = "Senha Dominio"

    MailCredential.UserName = "Usuario"

    'Selecionando o servidor SMTP

    ClientSMTP = New SmtpClient("Servidor SMTP")

    ClientSMTP.Credentials = MailCredential

    'enviando a mensagem

    ClientSMTP.Send(mailMsgMensagem)

     

    caso alguem passe por este problema, a solucao acima ira atender as necessidades... e aproveito para agradecer ao Fabiano Santiago pela atencao e respostas...

    []s - Flavio

    segunda-feira, 10 de julho de 2006 18:35
  • Estou usando o mesmo código, mas sem sucesso.

    A mensagem de erro é: {"Failure sending mail."}

    Inner Exception: {"Unable to read data from the transport connection: net_io_connectionclosed."}

    Pelo jeito vou ter que usar o método anterior MAILMESSAGE() mesmo ele sendo obsoleto.

    Obrigado!

    sexta-feira, 11 de agosto de 2006 12:46
  • Caro Flávio estou com esse mesmo problema para autenticar no servidor. O meu método está exatamente igual ao seu e retorna a exceção "autenticaçãor requerida para delay" Vc fez alguma modificação no servidor smpt ou algo assim?

     

    Obrigado!

    sexta-feira, 18 de agosto de 2006 18:23
  • Respondendo sua pergunta, eu nao fiz nenhuma alteracao no servidor.

    talvez seja necessario você usar um tipo de autenticacao segura, ssl, para conectar-se e enviar o e-mail.

    isso voce pode fazer usando o codigo:

    ClientSMTP.Credentials = MailCredential

    ClientSMTP.EnableSsl = True

    Talvez isso responda sua pergunta.

    []s

    Flavio

    segunda-feira, 21 de agosto de 2006 14:24
  • Flávio. Realmente vc se certificou que o servidor smtp que vc utilizou no código está marcado a opção autenticação requerida? Não consegui de jeito nenhum usando o framework 2.0. Sempre retornando a exceção autenticação rquerida para delay.

    Tive que voltar nao método obsoleto do framework 1.1 utilizando esquema da Microsoft para autenticar.

     

    Responda se possível

    sexta-feira, 1 de setembro de 2006 14:42