C# SendGrid没有发送电子邮件?

C# SendGrid没有发送电子邮件?,c#,sendgrid,C#,Sendgrid,我已经围绕sendgrid编写了一个Wrapper服务,除了实际发送电子邮件之外,所有的工作都可以完成 服务: public class SendGridService : ISendGridService { public async Task Send(Email email) { var preparedEmail = PrepareEmail(email); var apiKey = Configur

我已经围绕sendgrid编写了一个Wrapper服务,除了实际发送电子邮件之外,所有的工作都可以完成

服务:

public class SendGridService : ISendGridService
    {
        public async Task Send(Email email)
        {
            var preparedEmail = PrepareEmail(email);
            var apiKey = ConfigurationManager.AppSettings["sendGridApiKey"];

            var transportWeb = new Web(apiKey);
            await transportWeb.DeliverAsync(preparedEmail);

        }

        //other methods that prepare the email
    }
我正在使用的测试类,以查看电子邮件是否已发送:

[Test]
    public void Send_ShouldSendEmailToOneAddress()
    {
        //arrange
        //uses NBuilder to mock the object
        var email = Builder<Email>.CreateNew()
            .With(x => x.Recipient = "me@me.com")
            .With(x => x.Sender = "me@me.com")
            .With(x => x.SenderName = "me")
            .With(x => x.FilePathAttachement = null)
            .With(x => x.Html = null)
            .Build();

        //act
        var temp = _sut.Send(email);


        //assert

    }
[测试]
public void Send_ShouldSendEmailToOneAddress()
{
//安排
//使用NBuilder模拟对象
var email=Builder.CreateNew()
.With(x=>x.Recipient=”me@me.com")
.With(x=>x.Sender=”me@me.com")
.With(x=>x.SenderName=“me”)
.With(x=>x.FilePathAttachement=null)
.With(x=>x.Html=null)
.Build();
//表演
var temp=_sut.Send(电子邮件);
//断言
}
我意识到测试并不是真正的测试任何东西,但我希望在收件箱中看到电子邮件,然后围绕代码编写真假测试


问题是我从未收到过电子邮件。我缺少什么使电子邮件真正发送。

您没有正确调用异步方法。在单元测试的上下文中,它应该是:

[Test]
public async Task Send_ShouldSendEmailToOneAddress()
{
    //arrange
    //uses NBuilder to mock the object
    var email = Builder<Email>.CreateNew()
        .With(x => x.Recipient = "me@me.com")
        .With(x => x.Sender = "me@me.com")
        .With(x => x.SenderName = "me")
        .With(x => x.FilePathAttachement = null)
        .With(x => x.Html = null)
        .Build();

    //act
    await _sut.Send(email);


    //assert

}
[测试]
公共异步任务发送\u ShouldSendEmailToOneAddress()
{
//安排
//使用NBuilder模拟对象
var email=Builder.CreateNew()
.With(x=>x.Recipient=”me@me.com")
.With(x=>x.Sender=”me@me.com")
.With(x=>x.SenderName=“me”)
.With(x=>x.FilePathAttachement=null)
.With(x=>x.Html=null)
.Build();
//表演
等待发送(电子邮件);
//断言
}
即:

1) 将测试更改为返回
async Task
而不是
void

2)
wait
您的异步方法


当您在程序中正确使用邮件发送者时,您需要确保您的
async/await
的使用是如果您登录到sendgrid,sendgrid是否正在接收/处理任何内容?您的
DeliverAsync
方法是什么样的?@cal5barton否,就sendgrid而言,没有任何内容happening@X3074861XThat这不是我的方法。它随SendGrid api一起提供。您是否从SendGrid获得成功的api调用?这给了我一个编译器错误:无法将void赋值给隐式类型变量,而我正在将测试中的系统赋值给temp。@Robert。。只需删除
temp
(您的
SendGridService
不会返回任何内容)