まず、コントローラー拡張メソッドを作成できます。
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");
アクションメソッドの外側。