Api SendGrid';DeliverAsync()';不起作用
我正在尝试使用Azure和SendGrid发送电子邮件。我已经全部设置好了(我想),我的代码如下所示,但是'DeliverAsync()'方法不起作用,并且没有可用的'Deliver()'选项 以下是我的使用声明: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.
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()
toSendGridMessage 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。