0

ビューページのボタンをクリックしたときにメールを送信する方法を探しています。

私のビューページには、ユーザーが受信者からの電子メールを入力できるテキストフィールドがあります

 @Html.TextBoxFor(m => m.ReceiverMail, new { @placeholder="E-mail reveiver"})

ボタンをクリックした後、テキストフィールドに入力された電子メールに電子メールを送信する必要があります。

<input type="submit" class="btn btn-large btn-success" value="Send mail" />

送信者は、テキストフィールドにもメールを入力できます

@Html.TextBoxFor(m => m.SenderMail, new { @placeholder="E-mail sender"})    

メールのテキストは次のようになります。「これは (SenderMail) からのテスト メールです」 この簡単な例を教えてください。

4

2 に答える 2

0

アクション ポストを使用してコントローラーを作成します。

[HttpPost]
public ActionResult myaction(string ReceiverMail)
{
    if (ModelState.IsValid)
    {
        // ..

        new mailController().sendMail(ReceiverMail).Deliver(); // Send mail
        return RedirectToRoute("Usuario_default", new RouteValueDictionary { { "controller", "home" }, { "action", "logon" } });
    }

    Response.StatusCode = (int)HttpStatusCode.BadRequest;
    return View(viewModel);
}

ActionMailerを使用して電子メールを送信します。

于 2013-05-16T11:28:08.367 に答える
0

まず、コントローラー拡張メソッドを作成できます。

  public static partial class ControllerExtensions
    {
        public static string RenderPartialViewToString(this ControllerBase controller, string partialPath, object model)
        {
            if (string.IsNullOrEmpty(partialPath))
                partialPath = controller.ControllerContext.RouteData.GetRequiredString("action");

            controller.ViewData.Model = model;

            using (StringWriter sw = new StringWriter())
            {
                ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, partialPath);
                ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
                // copy model state items to the html helper 
                foreach (var item in viewContext.Controller.ViewData.ModelState)
                    if (!viewContext.ViewData.ModelState.Keys.Contains(item.Key))
                    {
                        viewContext.ViewData.ModelState.Add(item);
                    }


                viewResult.View.Render(viewContext, sw);

                return sw.GetStringBuilder().ToString();
            }
        }
    }

次に、SenderEmail receiverEmail を受信するコントローラー アクション メソッドを作成します。次に、テンプレート変数を作成します

   var template= this.RenderPartialViewToString("MailToSend", model);

これにより、View MailToSend が文字列に変換されます。

その後、MailMessage クラスを使用してメールを送信できます。

       SmtpClient client = new SmtpClient();
       client.Host = "smtp.gmail.com";  //if your email is gmail
       client.Port = 25;
       client.UseDefaultCredentials = false;
       client.Credentials = smtpCrede;
       client.EnableSsl = true;

       MailMessage message = new MailMessage();
       message.From = new MailAddress(here goes email");
       message.To.Add(new MailAddress(email));
       message.IsBodyHtml = true;
       message.Body = template;
       client.Send(message);
       return true;

また、次のように宣言します。

      private NetworkCredential smtpCrede = new NetworkCredential("your email, "your email password"); 

アクションメソッドの外側。

于 2013-05-20T15:45:48.830 に答える