asp.net-mvc
Asp.net mvc 메일 보내기
수색…
문의 양식 Asp MVC
1. 모델 :
public class ContactModel
{
[Required, Display(Name="Sender Name")]
public string SenderName { get; set; }
[Required, Display(Name = "Sender Email"), EmailAddress]
public string SenderEmail { get; set; }
[Required]
public string Message { get; set; }
}
2. 컨트롤러 :
public class HomeController
{
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Contact(ContectModel model)
{
if (ModelState.IsValid)
{
var mail = new MailMessage();
mail.To.Add(new MailAddress(model.SenderEmail));
mail.Subject = "Your Email Subject";
mail.Body = string.Format("<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>", model.SenderName, mail.SenderEmail, model.Message);
mail.IsBodyHtml = true;
using (var smtp = new SmtpClient())
{
await smtp.SendMailAsync(mail);
return RedirectToAction("SuccessMessage");
}
}
return View(model);
}
public ActionResult SuccessMessage()
{
return View();
}
}
3. Web.Config :
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="smtp-mail.outlook.com"
port="587"
userName="[email protected]"
password="password"
enableSsl="true" />
</smtp>
</mailSettings>
</system.net>
4.보기 :
Contact.cshtml
@model ContectModel
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<h4>Send your comments.</h4>
<hr />
<div class="form-group">
@Html.LabelFor(m => m.SenderName, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.SenderName, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.SenderName)
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.SenderEmail, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.SenderEmail, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.SenderEmail)
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.Message, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextAreaFor(m => m.Message, new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.Message)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="btn btn-default" value="Send" />
</div>
</div>
}
SuccessMessage.cshtml
<h2>Your message has been sent</h2>
클래스에서 전자 메일 보내기
이 방법은 도움이 될 수 있지만, 어떤 사람들 (나 같은)은 반복 코드가 발생하고, 우리가 보여 주듯이, 우리가 가지고있는 각 proyect에 동일한 코드를 가진 접촉 컨트롤러를 만들어야한다는 것을 의미합니다. , 나도이게 도움이 될 수있어.
DLL에있을 수있는 클래스입니다.
public class Emails
{
public static void SendHtmlEmail(string receiverEmail, string subject, string body, bool Ssl = false)
{
//Those are read it from webconfig or appconfig
var client = new SmtpClient(ConfigurationManager.AppSettings["MailServer"], Convert.ToInt16
(ConfigurationManager.AppSettings["MailPort"]))
{
Credentials = new NetworkCredential(ConfigurationManager.AppSettings["MailSender"], ConfigurationManager.AppSettings["MailSenderPassword"]),
EnableSsl = Ssl
};
MailMessage message = new MailMessage();
message.From = new MailAddress(ConfigurationManager.AppSettings["MailSender"]);
message.To.Add(receiverEmail);
// message.To.Add("[email protected]");
message.Subject = subject;
message.IsBodyHtml = true;
message.Body = body;
client.Send(message);
}
}
당신이 볼 수있는 것처럼 그것은 webconfig에서 읽을 것이므로, 우리는 그것을 설정해야한다.이 설정은 Gmail을위한 것이지만, 모든 호스트는 그들 자신의 설정을 가진다.
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="AdminUser" value="[email protected]" />
<add key="AdminPassWord" value="123456789" />
<add key="SMTPName" value="smtp.gmail.com" />
<add key="SMTPPort" value="587" />
</appSettings>
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow