如何使用Azure通信服务从web API发送电子邮件

bfrts1fy  于 2023-06-24  发布在  其他
关注(0)|答案(1)|浏览(104)

我正在使用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!

h43kikqp

h43kikqp1#

EmailMessage没有默认构造函数。参考here
此外,向多个收件人发送电子邮件需要一个额外的变量EmailRecipients,它支持To,CC和BCC。请参阅here
为你的案子修改了代码。

private async Task SendEmail(string recipientEmail, string subject, string body)
{
    var client = new EmailClient(emailconnectionstring);
    
    // Fill the EmailMessage
    var sender = "sender@example.com";
    var subject = subject;

    var emailContent = new EmailContent(subject)
    {
        PlainText = body
    };
    
    var toRecipients = new List<EmailAddress>()
    {
        new EmailAddress(recipientEmail)
    };
    
    var emailRecipients = new EmailRecipients(toRecipients);

    var emailMessage = new EmailMessage(sender, emailRecipients, emailContent);
    
    await client.SendAsync(emailMessage);
}

有关更多示例,请参阅GitHub repo

相关问题