Как я могу отправить электронное письмо на выделенный адрес электронной почты на основе раскрывающегося списка в представлении MVC

Я хотел отправить электронное письмо в форме обратной связи и перенаправить электронное письмо на определенный адрес электронной почты на основе раскрывающегося списка, т.е. если выбрано общее, я хотел, чтобы электронное письмо отправлялось по адресу [email protected] или информация, выбранная из раскрывающегося списка, электронное письмо должно перейдите по адресу [email protected], я уже создал форму, но не знаю, как это сделать, используя представления 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("[email protected]");
                        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("[email protected]", "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; }

    }

person Sudani    schedule 02.11.2017    source источник


Ответы (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.

person Shyju    schedule 02.11.2017