你会经常需要通过应用程序发送电子邮件。有几个工具和库可以帮助您实现这一目标。和基于云计算的电子邮件服务和友好的api使它容易富裕邮件服务集成到您的应用程序。最受欢迎的和有用的SendGrid基于云计算的电子邮件服务。
SendGrid可以帮助企业和开发者发送营销和事务性的邮件。它提供了一个简单、可靠和可伸缩的邮件基础设施,允许公司专注于他们的核心业务,同时保证他们的电子邮件传递给预期的收件人。SendGrid提供一个API和图书馆等许多不同的编程语言和框架c#和。net。
在本文中,我们将研究如何使用SendGrid发送电子邮件从一个ASP。网络核心7应用程序。我们将讨论以下几点:
- 介绍SendGrid和为什么它是有用的
- 如何生成一个SendGrid API钥匙吗
- 如何指定SendGrid元数据在应用程序配置文件
- 如何创建使用SendGrid EmailService类来发送电子邮件
- 如何创建EmailController类接受HTTP请求吗
使用本文中提供的代码示例,您应该Visual Studio 2022安装在您的系统。如果你不已经有一个副本,你可以在这里下载Visual Studio 2022。
还要注意,您将需要注册一个SendGrid帐户使用该服务。自由计划允许你每天发送100封电子邮件。
创建一个ASP。网络核心7Web API project in Visual Studio 2022
首先,让我们创建一个ASP。网络核心7minimal Web API project in Visual Studio 2022. Follow these steps:
- 启动Visual Studio 2022 IDE。
- 点击“创建新项目。”
- 在“创建新项目”窗口中,选择“ASP。网络核心Web API” from the list of templates displayed.
- 单击Next。
- 在“配置您的新项目”窗口中,指定新项目的名称和位置。
- (可选)检查“解决方案和项目在同一个目录”复选框,根据您的喜好。
- 单击Next。
- 接下来,所示的“其他信息”窗口中取消选中该复选框,表示“使用控制器…”在这个例子中我们将使用最小的api。离开“验证类型”为“没有”(默认)。
- 确保复选框“启用开放API支持,”“为HTTPS,配置”和“使码头工人”是不受我们不会使用这些特性。
- 单击Create。
我们将使用ASP。网络核心7Web API project to work with SendGrid in the sections below.
为什么使用SendGrid ?
SendGrid的邮件API为开发人员很容易将电子邮件功能集成到他们的应用程序。您可以使用SendGrid API发送邮件,跟踪电子邮件交付,和监控邮件性能。
SendGrid、企业可以轻松地发送自动的电子邮件消息,包括欢迎邮件,密码重置通知,发货确认,购买收据,和更多。SendGrid平台提供了各种各样的功能设计使发送邮件更轻松和有效的。
SendGrid还提供工具,帮助企业设计、管理和优化电子邮件活动。这些工具包括电子邮件模板,列表管理功能和运动分析。除了核心的电子邮件服务,SendGrid提供一系列附加服务包括电子邮件验证,验证和测试工具。
在SendGrid生成一个API密匙
如果你已经有一个SendGrid账户,您可以登录并继续。如果没有,你可以注册一个新的SendGrid帐户在这里。然后按照以下步骤:
- 登录到你的SendGrid账户。
- 选择设置- >发送方身份验证。
- 选择“单一发送验证。”
- 单击“开始”按钮。
- 创建一个发送者通过指定发件人的详细信息。
- 点击“验证单一发送”按钮。
- 验证您的单个发送者通过单击电子邮件你收到SendGrid。
- 接下来,选择设置- > API密钥。
- 点击“创建API密钥”按钮。
- 指定的权限级别API键。
- 点击“创建和查看”按钮生成API密匙。
- 保存生成的API密钥,因为不久你会使用它。
安装SendGrid NuGet包
目前为止一切都很顺利。现在SendGrid NuGet包添加到您的项目在Visual Studio。要做到这一点,选择项目在解决方案资源管理器窗口中,右键单击并选择“管理NuGet包。“在NuGet包管理器窗口中,寻找SendGrid包并安装它。
或者,您可以安装包通过NuGet包管理器控制台通过输入如下所示的行。
点>安装包SendGrid
在配置文件中指定SendGrid元数据
创建一个名为EmailSettings的部分在你的应用程序的配置文件并输入以下代码。
“EmailSettings”: {ApiKey”:“在这里指定Api键……”,"SenderEmail": "testaddress@testemail.com", "SenderName": "NoReply" }
确保“指定SendGrid API Key”换成SendGrid API SendGrid帐户你使用的关键。
绑定类型的一个实例EmailSettings配置值,输入下面的代码在程序中。cs文件。
builder.Services。配置< EmailSettings >(选项= > builder.Configuration.GetSection (EmailSettings) .Bind(选项);
使用SendGrid ASP。网络核心
在本节中,我们将研究如何发送电子邮件使用SendGrid ASP。净的核心。
创建EmailService类
现在,创建一个名为EmailService的类,使用SendGrid将负责发送邮件。为此,创建一个新的名为EmailService cs文件。cs和输入以下代码。
公共类EmailService: IEmailService{私人只读的IConfiguration _configuration;私人只读的IOptions < EmailSettings > _options;公共EmailService (IConfiguration配置,IOptions < EmailSettings >选项){_configuration =配置;_options =选项;}公共异步任务SendEmailAsync (string邮件,字符串,字符串htmlMessage){字符串?fromEmail = _options.Value.SenderEmail;字符串?fromName = _options.Value.SenderName;字符串?apiKey = _options.Value.ApiKey; var sendGridClient = new SendGridClient(apiKey); var from = new EmailAddress(fromEmail, fromName); var to = new EmailAddress(email); var plainTextContent = Regex.Replace(htmlMessage, "<[^>]*>", ""); var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlMessage); var response = await sendGridClient.SendEmailAsync(msg); } }
要注意的是选项模式被使用来检索电子邮件元数据从应用程序配置文件。
创建EmailController类
创建一个名为EmailController的新的API控制器在您的项目中。在你的控制器,注入EmailService类型的一个实例并调用SendEmailAsync方法:
(路线(“api /(控制器)”)][ApiController]公开课EmailController: ControllerBase{私人只读的IEmailService _emailService;私人只读的ILogger实例< EmailController > _logger;公共EmailController (IEmailService emailService, ILogger实例< EmailController >记录器){_emailService = emailService;_logger =记录器;}(HttpGet)公共异步任务< IActionResult >得到(){等待_emailService.SendEmailAsync (“email.com”、“主题”、“指定的html内容”);还好();}}
现在添加一个Singleton IEmailService类型的服务包括以下代码的程序。cs文件。
builder.Services。AddSingleton < IEmailService EmailService > ();
就是这样!当您运行您的应用程序并执行HttpGet EmailController行动,一封电子邮件将被发送使用SendGrid库。
SendGrid注册为一个服务并使用DI
请注意,您也可以注册SendGrid作为服务和利用依赖注入注入SendGrid在您的应用程序的一个实例。SendGrid作为服务注册,输入下面的代码在程序中。cs文件。
使用SendGrid.Extensions.DependencyInjection;builder.Services。AddSendGrid(选项= >{选项。ApiKey =建设者。配置.GetSection (EmailSettings) .GetValue <字符串> (“ApiKey”);});
正如我们所看到的,SendGrid提供一个健壮的API,我们可以使用它来轻松地将其电子邮件功能集成到我们的应用程序。SendGrid还集成了各种第三方应用程序和服务包括WordPress, Salesforce, Shopify,微软Azure。如果你需要一个可靠和可伸缩的电子邮件服务来帮助你达到你的听众,你的业务增长,SendGrid是一个伟大的选择。