Model view controller MVC net core 1.1.0 Mailkit发送返回空白页的邮件表单

Model view controller MVC net core 1.1.0 Mailkit发送返回空白页的邮件表单,model-view-controller,mailkit,Model View Controller,Mailkit,此代码有什么问题-我只想在成功发送后重定向: 公共异步任务SendEmailAsync(字符串电子邮件、字符串名称、字符串消息) { var emailMessage=new mimessage() 我不知道你为什么要在那里使用RedirectToAction。我不认为它可以在不是actionresult的方法中使用。该方法的目的是调用另一个actionmethod,然后在其中运行代码。但是你没有,所以你可以直接从你使用的任何actionmethod调用View(“谢谢”) 您应该为电子邮件方法

此代码有什么问题-我只想在成功发送后重定向:

公共异步任务SendEmailAsync(字符串电子邮件、字符串名称、字符串消息) { var emailMessage=new mimessage()


我不知道你为什么要在那里使用RedirectToAction。我不认为它可以在不是actionresult的方法中使用。该方法的目的是调用另一个actionmethod,然后在其中运行代码。但是你没有,所以你可以直接从你使用的任何actionmethod调用View(“谢谢”)

您应该为电子邮件方法创建一个单独的类,然后从控制器调用该类

这样,您只需在触发电子邮件的actionmethod中的一行中调用电子邮件方法。这将节省大量工作。此示例调用电子邮件类EmailService及其sendmail方法:

Public async Task<IActionResult> Mail()
{
   //maybe some validation or/and exeption handling

     var emailService = new EmailService();
     await emailService.SendEmailAsync();
     return View("Thanks");

  //errormessage if not succeed

}
public IActionResult Thanks()
{
    return View();
}
公共异步任务邮件()
{
//可能需要一些验证或/和验证处理
var emailService=new emailService();
等待emailService.SendEmailAsync();
返回视图(“谢谢”);
//如果未成功,则返回错误消息
}
公众谘询结果谢谢()
{
返回视图();
}
理想情况下,您希望使用依赖项注入来设置电子邮件服务。 在控制器(或其他类)中,您可以通过在构造函数中实例化来调用电子邮件类

Public async Task<IActionResult> Mail()
{
   //maybe some validation or/and exeption handling

     var emailService = new EmailService();
     await emailService.SendEmailAsync();
     return View("Thanks");

  //errormessage if not succeed

}
public IActionResult Thanks()
{
    return View();
}