Как я могу отправить письмо на выделенный адрес электронной почты на основе выпадающего списка в представлении MVC
Я хотел отправить электронное письмо в форме обратной связи и перенаправить его на определенный адрес электронной почты, основываясь на раскрывающемся списке, т. Е. Если выбрано общее значение, я хотел, чтобы сообщение отправлялось по адресу general@xxxx.com или информация, выбранная из раскрывающегося списка, должна перейдите по адресу info@xxxx.com, я уже создал форму, но не знаю, как это сделать, используя представления MVC actionResult и @Razor
мой взгляд
@model ETWServices.Models.ContactUs
@{
var culture = System.Threading.Thread.CurrentThread.CurrentUICulture.Name.ToLowerInvariant();
}
<div class="cards">
<div class="card">
<div id="contact-form" class="clearfix">
@Html.ValidationSummary(true)
@using (Html.BeginForm())
{
<h1>
@Resources.ResContact.Title
</h1>
<div class="editor-label">
@Html.LabelFor(model => model.Name)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Email)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Subject)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.Subject)
@Html.ValidationMessageFor(model => model.Subject)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.Message)
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.Message)
@Html.ValidationMessageFor(model => model.Message)
</div>
<p>
<div class="submit">
<input type="submit" value="@Resources.ResContact.Send" id="btnSubmit" />
</div>
</p>
}
</div>
</div>
</div>
Свяжитесь с нами контроллер
[HttpPost]
public ActionResult Contact(ContactUs contUs)
{
if (ModelState.IsValid)
{
try
{
MailMessage mailMsg = new MailMessage();
mailMsg.From = new MailAddress(contUs.Email);
mailMsg.To.Add("xxxxx@gmail.com");
mailMsg.Subject = contUs.Subject;
mailMsg.Body = contUs.Message;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Port = 587;
smtp.Credentials = new System.Net.NetworkCredential("xxxx@gmail.com", "gmailpassword");
smtp.EnableSsl = true;
smtp.Send(mailMsg);
ModelState.Clear();
}
catch (Exception ex)
{
ModelState.Clear();
ViewBag.Message = " Sorry we are facing Problem here ";
}
}
return View();
}
Свяжитесь с нами Модель
public class ContactUs
{
[Display(Name = nameof(Resources.ResContact.Name), ResourceType = typeof(Resources.ResContact))]
[Required(ErrorMessageResourceType =typeof(Resources.ResContact),
ErrorMessageResourceName = nameof(Resources.ResContact.NameReq))]
[StringLength(20, MinimumLength = 5,ErrorMessageResourceType =typeof(Resources.ResContact),
ErrorMessageResourceName = "NameShort")]
public string Name { get; set; }
[Display(Name = "Email", ResourceType =typeof(Resources.ResContact))]
[Required(ErrorMessageResourceType = typeof(Resources.ResContact),
ErrorMessageResourceName = "Emailrequired")]
[RegularExpression(".+@.+\\..+", ErrorMessageResourceType = typeof(Resources.ResContact),
ErrorMessageResourceName = "EmailWrong")]
public string Email { get; set; }
[Required(ErrorMessageResourceType =typeof(Resources.ResContact),
ErrorMessageResourceName ="subjectRequired")]
[Display(Name = "Subject", ResourceType = typeof(Resources.ResContact))]
public string Subject { get; set; }
[Required(ErrorMessageResourceType = typeof(Resources.ResContact),
ErrorMessageResourceName = "msgRequired")]
[Display(Name = "Message", ResourceType = typeof(Resources.ResContact))]
public string Message { get; set; }
}
1 ответ
Простое решение - добавить элемент SELECT в форму, добавить новое свойство в модель представления, соответствующее значению атрибута имени элемента SELECT.
<SELECT name="toAddress">
<option value="info">Info</option>
<option value="general">General</option>
</SELECT>
Теперь добавьте одно свойство к вашей модели представления с тем же именем
public class ContactUs
{
public string ToAddress { set;get;}
// your existing properties goes here
}
Теперь, когда пользователь отправляет форму, свойство ToAddress параметров вашего метода будет иметь выбранное значение (info
или же general
),. Вы можете использовать его дальше, чтобы создать свой полный адрес электронной почты.
[HttpPost]
public ActionResult Contact(ContactUs contUs)
{
var toSelection = contUs.ToAddress;
//use this as needed
}
Здесь мы жестко закодировали элемент SELECT с двумя вариантами. Но есть и другие способы отображения выпадающего списка, например использование DropDownListFor
вспомогательный метод.