Как я могу отправить письмо на выделенный адрес электронной почты на основе выпадающего списка в представлении 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 вспомогательный метод.

Другие вопросы по тегам