繁体   English   中英

ASP.NET Web API异步任务,发送邮件

[英]ASP.NET Web API Async Tasks, sending Mails

我的应用程序存在大量性能问题 我发现问题来自发送电子邮件。 我如何解决RegisterUser方法返回的问题,同时发送电子邮件仍在进行中? 我已经尝试过启动一个线程来运行SendEmailConfirm方法,但是在SendEmailConfirm中给了我一个ObjectDisposedException

public async Task<IdentityResult> RegisterUser(AccountViewModels.RegisterViewModel userModel)
{
    var result = await _userManager.CreateAsync(user, userModel.Password);
    this.SendEmailConfirm(userModel.Email);

    return result;
}

public async void SendEmailConfirm(string mail)
{

    string subject = "Please confirm your Email for Chronicus";
    string body = "Hello"
    string email = user.Email;

    _messageService.SendMail(mail, subject, body);

}

public void SendMail(string receiver, string subject, string body)
    {
        this._msg = new MailMessage(UserName, receiver);
        this._msg.From = new MailAddress(UserName, Name);
        this._msg.Subject = subject;
        this._msg.Body = body;
        this._msg.IsBodyHtml = true;
        this._smtpClient.Send(_msg);
    }

编辑:添加SendMail方法的问题

您需要使用SmtpClient类的SendMailAsync方法。

此外,您应该返回不返回任何值的异步方法的Task

以下是您的代码的外观:

public async Task<IdentityResult> RegisterUser(AccountViewModels.RegisterViewModel userModel)
{
    var result = await _userManager.CreateAsync(user, userModel.Password);
    await this.SendEmailConfirm(userModel.Email);

    return result;
}

public Task SendEmailConfirm(string mail)
{
    string subject = "Please confirm your Email for Chronicus";
    string body = "Hello"
    string email = user.Email;

    return _messageService.SendMail(mail, subject, body);
}

以下是SendMail外观:

public Task SendMail(string receiver, string subject, string body)
{
    this._msg = new MailMessage(UserName, receiver);
    this._msg.From = new MailAddress(UserName, Name);
    this._msg.Subject = subject;
    this._msg.Body = body;
    this._msg.IsBodyHtml = true;

    return this._smtpClient.SendMailAsync(_msg);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM