我正在使用Azure通信服务发送电子邮件,现在我想在Web API中执行此操作。每当我调用web API post函数时,记录将存储在数据库中,并且必须以电子邮件的形式发送给具有电子邮件ID的特定用户。
[HttpPost]
public async Task<ActionResult<UserTable>> Post([FromBody] UserTable userinfo)
{
try
{
var item = await _userTableRepository.AddUser(userinfo);
string recipientEmail = userinfo.Email;
string subject = "Welcome to our platform";
string body = $"Hello {userinfo.UserId}";
await SendEmail(recipientEmail,subject, body);
return Ok(item);
}
catch (Exception)
{
return StatusCode(StatusCodes.Status500InternalServerError, "Error sending email or saving data");
}
}
private async Task SendEmail(string recipientEmail, string subject, string body)
{
var client = new EmailClient(emailconnectionstring);
var emailMessage = new EmailMessage()
{
From = new EmailAddress("sender@example.com"),
To = new List<EmailAddress>()
{
new EmailAddress(recipientEmail)
},
Subject = subject,
Body = new EmailBody()
{
ContentType = EmailBodyType.Text,
Content = body
}
};
await client.SendAsync(emailMessage);
}
这是我使用Azure通信服务发送电子邮件的代码。但我得到了很多错误,当我尝试的电子邮件代码分开它的工作完美.当我在Web API中使用它时,我得到了这种错误。
1.错误CS 1729“EmailMessage”不包含接受0个参数的构造函数
1.错误CS 0117“EmailMessage”不包含“From”的定义
1.错误CS 0117“EmailMessage”不包含“收件人”的定义
1.错误CS 0117“EmailMessage”不包含“Subject”的定义
1.错误CS 0117“EmailMessage”不包含“Body”的定义
1.错误CS 0246找不到类型或命名空间名称“EmailBody”(是否缺少using指令或程序集引用?)
1.错误CS 0103名称“EmailBodyType”在当前上下文中不存在
1.错误CS1501方法“SendAsync”没有重载需要1个参数
我试着解决它,但它没有工作。因为我是新来的,所以我不知道这是对还是错。密码里有我遗漏的地方吗?是否有其他方法可以使用Azure通信服务从Web API发送电子邮件?
Thanks!
1条答案
按热度按时间h43kikqp1#
EmailMessage
没有默认构造函数。参考here。此外,向多个收件人发送电子邮件需要一个额外的变量
EmailRecipients
,它支持To,CC和BCC。请参阅here。为你的案子修改了代码。
有关更多示例,请参阅GitHub repo。