Api SendGrid';DeliverAsync()';不起作用

Api SendGrid';DeliverAsync()';不起作用,api,azure,sendgrid,Api,Azure,Sendgrid,我正在尝试使用Azure和SendGrid发送电子邮件。我已经全部设置好了(我想),我的代码如下所示,但是'DeliverAsync()'方法不起作用,并且没有可用的'Deliver()'选项 以下是我的使用声明: using System; using System.Web; using System.Web.UI; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.

我正在尝试使用Azure和SendGrid发送电子邮件。我已经全部设置好了(我想),我的代码如下所示,但是'DeliverAsync()'方法不起作用,并且没有可用的'Deliver()'选项

以下是我的使用声明:

using System;
using System.Web;
using System.Web.UI;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Net;
using System.Net.Mail;
using SendGrid;
using System.Threading.Tasks;
这是我的代码:“transportWeb.DeliverAsync(myMessage)”显示为纯黑色文本

// Create the email object first, then add the properties.

        var myMessage = new SendGridMessage();
        myMessage.AddTo("d@gmail.com");
        myMessage.From = new MailAddress("d@gmail.com", "John Smith");
        myMessage.Subject = "Testing the SendGrid Library";
        myMessage.Text = "Hello World!";

        var apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";

// create a Web transport, using API Key

        var transportWeb = new Web(apiKey);

// Send the email, which returns an awaitable task.

        transportWeb.DeliverAsync(myMessage);
我希望有人以前见过这一点,知道解决办法。网上有很多类似的问题,但我没有发现一个可以解决这个问题的方法。我正在使用SendGrid v6.3.4。我已尝试恢复到v6.3.3,但没有任何帮助。我在SendGrid中的统计数据显示,一切为零,没有发送电子邮件,没有请求,没有反弹等

更新:

我已经尝试创建一个新的Email类,以消除任何混乱并使其更清晰,在transportWeb之后,“DeliverAsync”方法仍然没有被识别

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.Net.Mail;
using SendGrid;
using System.Threading.Tasks;

namespace CPWebsite
{
    public class Email
    {
        static async void Main()
        {
            try
            {

                // Create the email object first, then add the properties.
                var myMessage = new SendGridMessage();
                myMessage.AddTo("d@gmail.com");
                myMessage.From = new MailAddress("d@gmail.com", "John Smith");
                myMessage.Subject = "Testing the SendGrid Library";
                myMessage.Text = "Hello World!";

                var apiKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
                // create a Web transport, using API Key
                var transportWeb = new Web(apiKey);

                // Send the email, which returns an awaitable task.
                await transportWeb.DeliverAsync(myMessage);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

        }
    }
}
我还尝试更改
var myMessage=new SendGridMessage()
to
SendGridMessage myMessage=new SendGridMessage()但是没有运气。根据需要,仅显示以下using语句

using System;
using System.Net.Mail;
using SendGrid;

在这一点上,我正在尝试任何事情

这是当前的控制台应用程序吗?您需要等待该方法,否则console应用程序主线程将完成执行,并导致工作线程在成功传递消息之前被杀死

尝试:

在using语句中还添加以下内容:

using System;
using System.Web;
using System.Web.UI;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Net;
using System.Net.Mail;
using SendGrid;
using System.Threading.Tasks;

我不知道这是否已解决,但请尝试在正文中使用myMessage.Html而不是myMessage.Text。特别是如果您在正文中使用html。我有几乎相同的设置,我的代码运行良好。

我的项目(Windows服务)基本上与调用SendGrid的特定线程同步,因此我必须做的是在.DeliverAsync()之后添加.Wait()

因此,请尝试:

static void Main()
后来:

transportWeb.DeliverAsync(myMessage).Wait();
在SendGrid文档中,实际上有一点需要注意的地方没有提到这项技术


干杯。

我不知道SendGrid,但我会先尝试调用同步方法,看看凭据和所有内容是否都准备好了。首先是同步,因为这将给您一个返回值,其中包含statuscode和message来告诉您发生了什么。这只是一个提示,作为对Allen上面关于同步方法的评论的回复,SendGrid C#Library不再有同步传递()方法。我可能缺少异步方法的using语句…?好,我在我的方法中添加了“async”,例如:“protected async void LogIn(object sender,EventArgs e)”,但“DeliverAsync”仍然显示为黑色文本,未被识别……如果有人有任何想法,我已经更新了我的原始帖子?嗨,这是一个Asp.Net网站应用程序。我尝试了wait,例如:wait-transportWeb.DeliverAsync(myMessage);但是我得到了一个错误,即“等待运算符只能在异步方法中使用”。好的,我通过在我的方法中添加“Async”使等待生效,例如:“受保护的异步无效登录(object sender,EventArgs e)”,但是“DeliverAsync”仍然显示为黑色文本,并且没有被识别……你说的是什么意思“仍显示为黑色文本且未被识别”?我正在使用VS2015中的“工具>选项>常规>蓝色”主题。变量等常规代码为黑色字体,类为浅蓝色字体。--我的语句应显示为:await[深蓝色字体]transportWeb[黑色字体]。DeliverAsync[浅蓝色字体](myMessage)[黑色字体];---因为“DeliverAsync”是黑色的,所以我认为它没有被识别为一个类。--当我键入“transportWeb”时,快捷上下文菜单将DeliverAsync显示为“awaitable System.Threading.Tasks.Task Web.DeliverAsync(ISendGrid消息)用法:await DeliverAsync(…);键入“transportWeb.”时,其他选项都是对象:Equals、GetHashCode、GetType或ToString。