Usuário com melhor resposta
Formulário de Contato com validação.

Pergunta
-
Bom dia pessoal.
Estou tentando fazer um formulário de contato e não consigo por nada! rs
Já li muito tópico aqui mesmo, mas nada me ajudou.
Estava seguindo este tutorial: http://www.frederikvig.com/2010/05/creating-a-contact-form-with-asp-net-mvc/
Mas não consigo enviar o formulário preenchido para o meu e-mail! =/
Gostaria de uma ajuda, ou até mesmo uns links com tutoriais e tal.
Desde já agradeço!
Respostas
-
Para a locaweb você tem que fazer o seguinte:
http://ajuda.locaweb.com.br/pt-br/Envio_de_e-mails_via_.NET_utilizando_o_System.Net.Mail
Eles não permitem autenticação externa, então você precisa autenticar local, e sendo assim você só vai obter sucesso no envio do E-mail com a página hospedada lá.
É meio chato ficar subindo o site para ter que testar, mas é o jeito.
Abraços,
André Baltieri
MTAC – Microsoft Technical Audience Contributor
Twitter: @andrebaltieri
Blog: http://andrebaltieri.net- Sugerido como Resposta André BaltieriMVP quinta-feira, 4 de outubro de 2012 13:02
- Marcado como Resposta Rodrigo Fukamichi quinta-feira, 4 de outubro de 2012 13:14
Todas as Respostas
-
Rodrigo, está usando ASP.NET Web Forms ou MVC?
Você não consegue recuperar os valores do formulário ou você recupera os valores e não consegue enviar via E-mail?Caso esteja usando ASP.NET Web Forms, provavelmente você terá um evento no seu botão enviar onde pode realizar o seguinte:
Recuperar os campos utilizando por exemplo:
String nome = txtNome.TextE posteriormente, realizar o envio do E-mail
Neste site mostra N formas de envio de E-mail: http://systemnetmail.comCaso esteja utilizando ASP.NET MVC você pode recuperar uma entidade direto no seu método:
public ActionResult EnviaEmail(SendMailViewModel entity)E depois realizar o envio do E-mail como mencionado acima.
Ou pode recuperar valores através do Request.Form["ID DO SEU OBJETO HTML"] e depois enviar os dados.
Preciso de mais informações para te ajudar
André Baltieri
MTAC – Microsoft Technical Audience Contributor
Twitter: @andrebaltieri
Blog: http://andrebaltieri.net -
Opa. Valeu pela ajuda cara!
Seguinte, eu rodo a aplicação preencho os dados do form. Inclusive a validação está 100%. Quando clico em enviar, a página é atualizada, retorna a mensagem "Thanks! We'll get back to you soon." e não limpa os dados que digitei. Daí quando vou verificar no e-mail, nada chegou.
Então, estou usando ASP.NET MVC 3 e Razor engine. Andei lendo uns outros tutoriais, e alguns mencionam uma alteração no web.config. Neste exemplo que mencionei na pergunta do tópico, o cara não cita nada a respeito. Será que é aí o erro?
-
Problema deve ser o seguinte, ou filtro de Spam, verifica a lixeira, ou autenticação.
O Hotmail por exemplo não permite autenticação externa, alguns servidores como locaweb também não.Você fez estes testes da sua máquina? Se sim, experimenta subir o site para seu servidor, se é que ele usa o mesmo servidor para envio de E-mails.
Abraços,
André Baltieri
MTAC – Microsoft Technical Audience Contributor
Twitter: @andrebaltieri
Blog: http://andrebaltieri.net -
Você configurou a seção SMTP no web.config?
Baixe este aplicativo http://antix.co.uk/Projects/SMTP-Server-For-Developers. É ótimo para testar envio de emails seja em qualquer tipo de programa que você está desenvolvendo.
Poste o código da sua action que envia o formulário para avaliarmos.
-
Então cara, eu não configurei não.
Aqui o código:
public ActionResult Contact() { return View(); } [HttpPost] public ActionResult Contact(Contact model) { string message = "There are a few errors"; if (ModelState.IsValid) { message = "Thanks! We'll get back to you soon."; } if (Request.IsAjaxRequest()) { return new JsonResult { ContentEncoding = Encoding.UTF8, Data = new { success = true, message = message } }; } TempData["Message"] = message; return View(); }
-
Vc esta mandando o e-mail como?
Eu usei o Helper WebMail e funcionou perfeitamente.
aqui tem um exemplo
-
Faltou você enviar o E-mail...
if(ModelState.IsValid)
{
try
{
WebMail.SmtpServer = "my.smtp.server";
WebMail.Send(
"feedback[at]mycompany.domain",
subject,
body,
email
);
return RedirectToAction("ACTION");
}
catch (Exception ex)
{
LOGAR O ERRO
}
}
Abraços,
André Baltieri
MTAC – Microsoft Technical Audience Contributor
Twitter: @andrebaltieri
Blog: http://andrebaltieri.net -
Galera, muito obrigado pela ajuda de todos! Era o que o Baltieri havia dito, porém a questão agora é com a autenticação. Como ele citou, eu uso servidor locaweb. E quando tento enviar o formulário, aparece o seguinte erro:
System.Net.Mail.SmtpException: Bad sequence of commands. The server response was: 5.0.3 <187-78-000-000.user.veloxzone.com.br[187.78.000.000]>: Client host rejected: Para envio de mensagens e necessaria autenticacao. Para saber como corrigir este erro acesse: http://wiki.locaweb.com/pt-br/Mobimail_/_Locamail_-_Envio_Autenticado /This mail server requires authentication at System.Net.Mail.RecipientCommand.CheckResponse(SmtpStatusCode statusCode, String response) at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception) at System.Net.Mail.SmtpClient.Send(MailMessage message) at System.Web.Helpers.WebMail.Send(String to, String subject, String body, String from, String cc, IEnumerable`1 filesToAttach, Boolean isBodyHtml, IEnumerable`1 additionalHeaders)...Essa página que eles passam (http://wiki.locaweb.com/pt-br/Mobimail_/_Locamail_-_Envio_Autenticado) não existe mais.
-
Para a locaweb você tem que fazer o seguinte:
http://ajuda.locaweb.com.br/pt-br/Envio_de_e-mails_via_.NET_utilizando_o_System.Net.Mail
Eles não permitem autenticação externa, então você precisa autenticar local, e sendo assim você só vai obter sucesso no envio do E-mail com a página hospedada lá.
É meio chato ficar subindo o site para ter que testar, mas é o jeito.
Abraços,
André Baltieri
MTAC – Microsoft Technical Audience Contributor
Twitter: @andrebaltieri
Blog: http://andrebaltieri.net- Sugerido como Resposta André BaltieriMVP quinta-feira, 4 de outubro de 2012 13:02
- Marcado como Resposta Rodrigo Fukamichi quinta-feira, 4 de outubro de 2012 13:14
-