Como envio email em asp.net mvc

.NET

28/07/2015

Podem me dar do exemplo simples
de preenchendo manualmente os endereço e provedor de email
até os mas complexos que o usuario preenche.
Gabriel Queiroz

Gabriel Queiroz

Curtidas 0

Melhor post

Lucas Genovez

Lucas Genovez

27/02/2019

Pessoal, eu fiquei uma semana tentando fazer o formulário funciona, e não enviava o e-mail de jeito nenhum! O que resolveu, vou tirar:

smtp.Port = 465;


Se fizerem isso, você vai conseguir enviar para qualquer plataforma de e-mail, seja ela LocalWeb, Outlook, Gmail etc! Espero ter ajudado...
GOSTEI 1

Mais Respostas

Randrade

Randrade

28/07/2015

É uma coisa simples, se você quer enviar e-mail como um formulário de contato.

Primeiro, crie um Model para obter os dados necessários para o envio do e-mail.

public class MailModel
{
    public string From { get; set; }
    public string To { get; set; }
    public string Subject { get; set; }
    public string Body{ get; set; }
}


Depois, crie um controller para enviar o e-mail:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Web;
using System.Web.Mvc; 
namespace SendMail.Controllers
{
    public class SendMailerController : Controller
    {
        //
        // GET: /SendMailer/  
        public ActionResult Index()
        {
            return View();
        }  
        [HttpPost]
        public ViewResult Index(SendMail.Models.MailModel _objModelMail)
       {
            if (ModelState.IsValid)
            {
            	//Instância classe email
                MailMessage mail = new MailMessage();
                mail.To.Add(_objModelMail.To);
                mail.From = new MailAddress(_objModelMail.From);
                mail.Subject = _objModelMail.Subject;
                string Body = _objModelMail.Body;
                mail.Body = Body;
                mail.IsBodyHtml = true;

                //Instância smtp do servidor, neste caso o gmail.
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";
                smtp.Port = 587;
                smtp.UseDefaultCredentials = false;
                smtp.Credentials = new System.Net.NetworkCredential
                ("username", "password");// Login e senha do e-mail.
                smtp.EnableSsl = true;
                smtp.Send(mail);
                return View("Index", _objModelMail);
            }
            else
            {
                return View();
            }
        }
    }
}


E em sua view, você adiciona os campos para contato e mensagem, desta forma:
@model SendMail.Models.MailModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<fieldset>
<legend>
Send Email
</legend>
@using (Html.BeginForm())
{
@Html.ValidationSummary()
<p>From: </p>
<p>@Html.TextBoxFor(m=>m.From)</p>
 <p>To: </p>
<p>@Html.TextBoxFor(m=>m.To)</p>
<p>Subject: </p>
<p>@Html.TextBoxFor(m=>m.Subject)</p>
 <p>Body: </p>
<p>@Html.TextAreaFor(m=>m.Body)</p>
<input type ="submit" value ="Send" />
}  </fieldset>


Note que na View temos os campos declarados no Model.
From, To, Subject, Body.

Ao clicar em enviar, o e-mail será enviado para o e-mail declarado no campo "To".

Vou deixar mais alguns links com tutoriais, caso seja necessário:
Sending an e-mail using Asp.Net MVC
how to send e-mail in asp.net mvc
GOSTEI 0
Gabriel Queiroz

Gabriel Queiroz

28/07/2015

Vou tentar desta froma muito obrigado Randrade ja tem me ajdua bastante aqui no forum.
GOSTEI 0
Gabriel Queiroz

Gabriel Queiroz

28/07/2015

è que tenho uma ideia aqui exemplo tem agendamento no dia que chegar o agendamento , o usuario que agendou sera noutificado no email e se o agendamento nao passar a ser um atendimento ele continua mandando email de 5 em 5 minutos
GOSTEI 0
Lucas Genovez

Lucas Genovez

28/07/2015

Cara, não sei se estou fazendo certo, mas estou tendo problema com o tempo de envio! Alguém pode me ajudar ?

public class MailModel
{
    public string From { get; set; }
    public string To { get; set; }
    public string Subject { get; set; }
    public string Body { get; set; }
}



using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Mail;
using System.Web;
using System.Web.Mvc;
namespace SendMail.Controllers
{
    public class SendMailerController : Controller
    {
        //
        // GET: /SendMailer/  
        public ActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public ViewResult Index(SendMail.Models.MailModel _objModelMail)
        {
            if (ModelState.IsValid)
            {
                //Instância classe email
                MailMessage mail = new MailMessage();
                mail.To.Add("contato@eletricanovaes.com.br");
                mail.From = new MailAddress("contato@eletricanovaes.com.br");
                mail.Subject = _objModelMail.Subject;
                string Body = _objModelMail.Body;
                mail.Body = Body;
                mail.IsBodyHtml = true;

                //Instância smtp do servidor, neste caso o gmail.
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "email-ssl.com.br";
                smtp.Port = 465;
                smtp.UseDefaultCredentials = false;
                smtp.Credentials = new System.Net.NetworkCredential
                ("contato@eletricanovaes.com.br", "contato@200");// Login e senha do e-mail.
                smtp.EnableSsl = true;
                smtp.Send(mail);
                return View("Index", _objModelMail);
            }
            else
            {
                return View();
            }
        }
    }
}


@model SendMail.Models.MailModel
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<fieldset>
<legend>
Send Email
</legend>
@using (Html.BeginForm())
{
@Html.ValidationSummary()
<p>From: </p>
<p>@Html.TextBoxFor(m => m.From)</p>
<p>To: </p>
<p>@Html.TextBoxFor(m => m.To)</p>
<p>Subject: </p>
<p>@Html.TextBoxFor(m => m.Subject)</p>
<p>Body: </p>
<p>@Html.TextAreaFor(m => m.Body)</p>
<input type="submit" value="Send" />
}
</fieldset>
GOSTEI 0
POSTAR