在ASP.NET MVC中,可以使用异步任务来发送电子邮件,以确保视图在发送邮件完成之前不会返回。以下是一个示例代码:
首先,需要在Controller中创建一个异步方法来发送电子邮件。在这个方法中,可以使用SmtpClient类来发送电子邮件。然后,使用await关键字来等待邮件发送完成。
public async Task SendEmailAsync(string email, string subject, string message)
{
using (var smtpClient = new SmtpClient())
{
// 设置SMTP服务器和认证信息
smtpClient.Host = "smtp.example.com";
smtpClient.Port = 587;
smtpClient.EnableSsl = true;
smtpClient.Credentials = new NetworkCredential("username", "password");
// 创建MailMessage对象
var mailMessage = new MailMessage("sender@example.com", email, subject, message);
// 发送邮件
await smtpClient.SendMailAsync(mailMessage);
}
}
然后,在Controller的Action方法中调用SendEmailAsync方法,使用await关键字等待邮件发送完成。
public async Task Index()
{
// 调用SendEmailAsync方法发送邮件
await SendEmailAsync("recipient@example.com", "Subject", "Message");
// 其他逻辑
return View();
}
这样,当用户访问该Action方法时,视图将会等待邮件发送完成后才会返回。