public async Task <Response> Execute(Enum emailType) { FromEmail = await _appSettings.AdminEmail; FromName = await _appSettings.AdminName; var apiKey = await _appSettings.SendGridAPIKey; var client = new SendGridClient(apiKey); var from = new EmailAddress(FromEmail, FromName); var to = new EmailAddress(_toEmail, _toName); _token = HttpUtility.UrlEncode(_token); switch (emailType) { case EmailType.AccountVerification: var accountVerification = new AccountVerificationEmail(_appSettings); accountVerification._email = _email; accountVerification._token = _token; _template = accountVerification; break; case EmailType.ScoreDetail: var scoreDetails = new ScoreDetailsEmail(); scoreDetails._score = _score; _template = scoreDetails; break; case EmailType.Purchase: var purchaseDetails = new PurchaseDetailsEmail(); purchaseDetails._coin = _coin; _template = purchaseDetails; break; case EmailType.ChangePassword: var changePasswordEmail = new ChangePasswordEmail(_appSettings); changePasswordEmail._email = _email; changePasswordEmail._token = _token; _template = changePasswordEmail; break; default: break; } var item = await _template.Template(); var msg = MailHelper.CreateSingleEmail(from, to, item.Subject, item.PlainTextContent, item.HtmlContent); var response = await client.SendEmailAsync(msg); return(response); }