意图是已登录的用户将不会使用自己的电子邮件地址发送电子邮件,而是由其他人的名字自动发送电子邮件通知给他人。
然后,我认为您想要向您的用户提供发送电子邮件的功能,用户可以选择接收电子邮件的人,但所有电子邮件都应从特定帐户发送,例如
admin@xxx.onmicrosoft.com
,因此您需要了解一些有关发送电子邮件API的内容。
正如@user2250152所提到的,
await graphClient.Users["userId"]
,这里的
userId
表示谁发送电子邮件,因为您的要求是从一个特定的电子邮件地址发送所有电子邮件,所以它应该以硬编码方式设置为
admin@xxx.onmicrosoft.com
。
接下来是如何发送电子邮件,调用ms graph api应该提供访问令牌,由于您的要求是通过应用程序而不是每个用户发送电子邮件,因此我恐怕客户端凭据流程是更好的选择,这样当情况涉及到
从几个特定的电子邮件地址发送电子邮件
时,您就不需要更改流程。现在,您需要要求租户管理员在Azure AD中添加
Mail.Send Application
API权限以使用这种类型的流程。
![enter image description here](https://istack.dev59.com/45zUM.webp)
这里是代码:
using Azure.Identity;
using Microsoft.Graph;
var mesg = new Message
{
Subject = "Meet for lunch?",
Body = new ItemBody
{
ContentType = BodyType.Text,
Content = "The new cafeteria is open."
},
ToRecipients = new List<Recipient>
{
new Recipient
{
EmailAddress = new EmailAddress
{
Address = "xxx@gmail.com"
}
}
},
Attachments = new MessageAttachmentsCollectionPage()
};
var scopes = new[] { "https://graph.microsoft.com/.default" };
var tenantId = "your_tenant_name.onmicrosoft.com";
var clientId = "azure_ad_app_client_id";
var clientSecret = "client_secret_for_the_azuread_app";
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
await graphClient.Users["user_id_which_you_wanna_used_for_sending_email"].SendMail(mesg, false).Request().PostAsync();