Чтобы вернуть значение из асинхронного метода, его следует ожидать. Смотрите пример вызова метода ниже:
private async Task<System.Net.HttpStatusCode> Execute(String EmailId, String Message)
{
var apiKey = "abcdefghijklmnopqrstuvwxyz1234567890";
var client = new SendGridClient(apiKey);
var from = new EmailAddress("myemail@gmail.com", "Sender");
var subject = "Testing Email";
var to = new EmailAddress(EmailId, "Reciever");
var plainTextContent = "You have recieved this message from me";
var htmlContent = Message + "<br><i>-Message sent by me</i>";
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
var response = await client.SendEmailAsync(msg).ConfigureAwait(false);
return response.StatusCode;
}
private async Task GetStatusCodeExample(String EmailId, String Message)
{
var statusCode = await Execute(EmailId, Message);
}
EDIT:
обновите свой код, чтобы использовать следующее вместе с обновленным выше методом Execute:
protected void BtnSend_Click(object sender, EventArgs e)
{
lblmsg.InnerText = SendMail(txtEmailId.Text.ToString(),
txtMessage.Text.ToString()); //------------
private String SendMail(String EmailId, String Message)
{
var task = Execute(EmailId, Message);
task.Wait();
return ((int)task.Result).ToString();
}