命名空间:microsoft.graph

使用 JSON 或 MIME 格式发送请求正文中指定的邮件。

使用 JSON 格式时,可以在同一 sendMail 操作调用中包含 文件附件

使用 MIME 格式时:

  • 提供适用的 Internet 邮件头 MIME 内容 ,所有内容在请求正文中都通过 base64 格式进行编码。
  • 向 MIME 内容添加任何附件和 S/MIME 属性。
  • 此方法将邮件保存在 “已发送邮件” 文件夹中。

    或者, 创建草稿邮件 稍后发送。

    若要详细了解邮件传递到收件人之前后端所涉及的步骤,请参阅 此处

    调用此 API 需要下列权限之一。 若要了解详细信息,包括如何选择权限的信息,请参阅 权限

    权限(从最低特权到最高特权)

    当指定 MIME 格式的正文时,请在请求正文中提供 MIME 内容为 base64 编码的字符串

    如果成功,此方法返回 202 Accepted 响应代码。 它不会在响应正文中返回任何内容。

    如果请求正文包含错误的 MIME 内容,此方法将返回 400 Bad request 和以下错误消息:“无效的 base64 字符串 MIME 内容”。

    示例 1:使用 JSON 格式发送新电子邮件

    下面是一个如何调用此 API 的示例。

    下面是一个请求示例。

    JavaScript PowerShell var graphClient = new GraphServiceClient(requestAdapter); var requestBody = new Microsoft.Graph.Me.SendMail.SendMailPostRequestBody Message = 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 = "frannis@contoso.onmicrosoft.com", CcRecipients = new List<Recipient> new Recipient EmailAddress = new EmailAddress Address = "danas@contoso.onmicrosoft.com", SaveToSentItems = false, await graphClient.Me.SendMail.PostAsync(requestBody); "context" msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go" graphmodels "github.com/microsoftgraph/msgraph-sdk-go/Me/SendMail" //other-imports graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes) requestBody := graphmodels.NewSendMailPostRequestBody() message := graphmodels.NewMessage() subject := "Meet for lunch?" message.SetSubject(&subject) body := graphmodels.NewItemBody() contentType := graphmodels.TEXT_BODYTYPE body.SetContentType(&contentType) content := "The new cafeteria is open." body.SetContent(&content) message.SetBody(body) recipient := graphmodels.NewRecipient() emailAddress := graphmodels.NewEmailAddress() address := "frannis@contoso.onmicrosoft.com" emailAddress.SetAddress(&address) recipient.SetEmailAddress(emailAddress) toRecipients := []graphmodels.Recipientable { recipient, message.SetToRecipients(toRecipients) recipient := graphmodels.NewRecipient() emailAddress := graphmodels.NewEmailAddress() address := "danas@contoso.onmicrosoft.com" emailAddress.SetAddress(&address) recipient.SetEmailAddress(emailAddress) ccRecipients := []graphmodels.Recipientable { recipient, message.SetCcRecipients(ccRecipients) requestBody.SetMessage(message) saveToSentItems := false requestBody.SetSaveToSentItems(&saveToSentItems) graphClient.Me().SendMail().Post(context.Background(), requestBody, nil) GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient(); Message message = new Message(); message.subject = "Meet for lunch?"; ItemBody body = new ItemBody(); body.contentType = BodyType.TEXT; body.content = "The new cafeteria is open."; message.body = body; LinkedList<Recipient> toRecipientsList = new LinkedList<Recipient>(); Recipient toRecipients = new Recipient(); EmailAddress emailAddress = new EmailAddress(); emailAddress.address = "frannis@contoso.onmicrosoft.com"; toRecipients.emailAddress = emailAddress; toRecipientsList.add(toRecipients); message.toRecipients = toRecipientsList; LinkedList<Recipient> ccRecipientsList = new LinkedList<Recipient>(); Recipient ccRecipients = new Recipient(); EmailAddress emailAddress1 = new EmailAddress(); emailAddress1.address = "danas@contoso.onmicrosoft.com"; ccRecipients.emailAddress = emailAddress1; ccRecipientsList.add(ccRecipients); message.ccRecipients = ccRecipientsList; boolean saveToSentItems = false; graphClient.me() .sendMail(UserSendMailParameterSet .newBuilder() .withMessage(message) .withSaveToSentItems(saveToSentItems) .build()) .buildRequest() .post(); // THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY $graphServiceClient = new GraphServiceClient($requestAdapter); $requestBody = new SendMailPostRequestBody(); $message = new Message(); $message->setSubject('Meet for lunch?'); $messageBody = new ItemBody(); $messageBody->setContentType(new BodyType('text')); $messageBody->setContent('The new cafeteria is open.'); $message->setBody($messageBody); $toRecipientsRecipient1 = new Recipient(); $toRecipientsRecipient1EmailAddress = new EmailAddress(); $toRecipientsRecipient1EmailAddress->setAddress('frannis@contoso.onmicrosoft.com'); $toRecipientsRecipient1->setEmailAddress($toRecipientsRecipient1EmailAddress); $toRecipientsArray []= $toRecipientsRecipient1; $message->setToRecipients($toRecipientsArray); $ccRecipientsRecipient1 = new Recipient(); $ccRecipientsRecipient1EmailAddress = new EmailAddress(); $ccRecipientsRecipient1EmailAddress->setAddress('danas@contoso.onmicrosoft.com'); $ccRecipientsRecipient1->setEmailAddress($ccRecipientsRecipient1EmailAddress); $ccRecipientsArray []= $ccRecipientsRecipient1; $message->setCcRecipients($ccRecipientsArray); $requestBody->setMessage($message); $requestBody->setSaveToSentItems(false); $graphServiceClient->me()->sendMail()->post($requestBody); var graphClient = new GraphServiceClient(requestAdapter); var requestBody = new Microsoft.Graph.Me.SendMail.SendMailPostRequestBody Message = new Message Subject = "9/9/2018: concert", Body = new ItemBody ContentType = BodyType.Html, Content = "The group represents Nevada.", ToRecipients = new List<Recipient> new Recipient EmailAddress = new EmailAddress Address = "AlexW@contoso.OnMicrosoft.com", InternetMessageHeaders = new List<InternetMessageHeader> new InternetMessageHeader Name = "x-custom-header-group-name", Value = "Nevada", new InternetMessageHeader Name = "x-custom-header-group-id", Value = "NV001", await graphClient.Me.SendMail.PostAsync(requestBody); "context" msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go" graphmodels "github.com/microsoftgraph/msgraph-sdk-go/Me/SendMail" //other-imports graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes) requestBody := graphmodels.NewSendMailPostRequestBody() message := graphmodels.NewMessage() subject := "9/9/2018: concert" message.SetSubject(&subject) body := graphmodels.NewItemBody() contentType := graphmodels.HTML_BODYTYPE body.SetContentType(&contentType) content := "The group represents Nevada." body.SetContent(&content) message.SetBody(body) recipient := graphmodels.NewRecipient() emailAddress := graphmodels.NewEmailAddress() address := "AlexW@contoso.OnMicrosoft.com" emailAddress.SetAddress(&address) recipient.SetEmailAddress(emailAddress) toRecipients := []graphmodels.Recipientable { recipient, message.SetToRecipients(toRecipients) internetMessageHeader := graphmodels.NewInternetMessageHeader() name := "x-custom-header-group-name" internetMessageHeader.SetName(&name) value := "Nevada" internetMessageHeader.SetValue(&value) internetMessageHeader1 := graphmodels.NewInternetMessageHeader() name := "x-custom-header-group-id" internetMessageHeader1.SetName(&name) value := "NV001" internetMessageHeader1.SetValue(&value) internetMessageHeaders := []graphmodels.InternetMessageHeaderable { internetMessageHeader, internetMessageHeader1, message.SetInternetMessageHeaders(internetMessageHeaders) requestBody.SetMessage(message) graphClient.Me().SendMail().Post(context.Background(), requestBody, nil) GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient(); Message message = new Message(); message.subject = "9/9/2018: concert"; ItemBody body = new ItemBody(); body.contentType = BodyType.HTML; body.content = "The group represents Nevada."; message.body = body; LinkedList<Recipient> toRecipientsList = new LinkedList<Recipient>(); Recipient toRecipients = new Recipient(); EmailAddress emailAddress = new EmailAddress(); emailAddress.address = "AlexW@contoso.OnMicrosoft.com"; toRecipients.emailAddress = emailAddress; toRecipientsList.add(toRecipients); message.toRecipients = toRecipientsList; LinkedList<InternetMessageHeader> internetMessageHeadersList = new LinkedList<InternetMessageHeader>(); InternetMessageHeader internetMessageHeaders = new InternetMessageHeader(); internetMessageHeaders.name = "x-custom-header-group-name"; internetMessageHeaders.value = "Nevada"; internetMessageHeadersList.add(internetMessageHeaders); InternetMessageHeader internetMessageHeaders1 = new InternetMessageHeader(); internetMessageHeaders1.name = "x-custom-header-group-id"; internetMessageHeaders1.value = "NV001"; internetMessageHeadersList.add(internetMessageHeaders1); message.internetMessageHeaders = internetMessageHeadersList; graphClient.me() .sendMail(UserSendMailParameterSet .newBuilder() .withMessage(message) .withSaveToSentItems(null) .build()) .buildRequest() .post(); // THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY $graphServiceClient = new GraphServiceClient($requestAdapter); $requestBody = new SendMailPostRequestBody(); $message = new Message(); $message->setSubject('9/9/2018: concert'); $messageBody = new ItemBody(); $messageBody->setContentType(new BodyType('html')); $messageBody->setContent('The group represents Nevada.'); $message->setBody($messageBody); $toRecipientsRecipient1 = new Recipient(); $toRecipientsRecipient1EmailAddress = new EmailAddress(); $toRecipientsRecipient1EmailAddress->setAddress('AlexW@contoso.OnMicrosoft.com'); $toRecipientsRecipient1->setEmailAddress($toRecipientsRecipient1EmailAddress); $toRecipientsArray []= $toRecipientsRecipient1; $message->setToRecipients($toRecipientsArray); $internetMessageHeadersInternetMessageHeader1 = new InternetMessageHeader(); $internetMessageHeadersInternetMessageHeader1->setName('x-custom-header-group-name'); $internetMessageHeadersInternetMessageHeader1->setValue('Nevada'); $internetMessageHeadersArray []= $internetMessageHeadersInternetMessageHeader1; $internetMessageHeadersInternetMessageHeader2 = new InternetMessageHeader(); $internetMessageHeadersInternetMessageHeader2->setName('x-custom-header-group-id'); $internetMessageHeadersInternetMessageHeader2->setValue('NV001'); $internetMessageHeadersArray []= $internetMessageHeadersInternetMessageHeader2; $message->setInternetMessageHeaders($internetMessageHeadersArray); $requestBody->setMessage($message); $graphServiceClient->me()->sendMail()->post($requestBody); "@odata.type": "#microsoft.graph.fileAttachment", "name": "attachment.txt", "contentType": "text/plain", "contentBytes": "SGVsbG8gV29ybGQh" var graphClient = new GraphServiceClient(requestAdapter); var requestBody = new Microsoft.Graph.Me.SendMail.SendMailPostRequestBody Message = 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 = "meganb@contoso.onmicrosoft.com", Attachments = new List<Attachment> new Attachment OdataType = "#microsoft.graph.fileAttachment", Name = "attachment.txt", ContentType = "text/plain", AdditionalData = new Dictionary<string, object> "contentBytes" , "SGVsbG8gV29ybGQh" await graphClient.Me.SendMail.PostAsync(requestBody); "context" msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go" graphmodels "github.com/microsoftgraph/msgraph-sdk-go/Me/SendMail" //other-imports graphClient := msgraphsdk.NewGraphServiceClientWithCredentials(cred, scopes) requestBody := graphmodels.NewSendMailPostRequestBody() message := graphmodels.NewMessage() subject := "Meet for lunch?" message.SetSubject(&subject) body := graphmodels.NewItemBody() contentType := graphmodels.TEXT_BODYTYPE body.SetContentType(&contentType) content := "The new cafeteria is open." body.SetContent(&content) message.SetBody(body) recipient := graphmodels.NewRecipient() emailAddress := graphmodels.NewEmailAddress() address := "meganb@contoso.onmicrosoft.com" emailAddress.SetAddress(&address) recipient.SetEmailAddress(emailAddress) toRecipients := []graphmodels.Recipientable { recipient, message.SetToRecipients(toRecipients) attachment := graphmodels.NewAttachment() name := "attachment.txt" attachment.SetName(&name) contentType := "text/plain" attachment.SetContentType(&contentType) additionalData := map[string]interface{}{ "contentBytes" : "SGVsbG8gV29ybGQh", attachment.SetAdditionalData(additionalData) attachments := []graphmodels.Attachmentable { attachment, message.SetAttachments(attachments) requestBody.SetMessage(message) graphClient.Me().SendMail().Post(context.Background(), requestBody, nil) GraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider( authProvider ).buildClient(); Message message = new Message(); message.subject = "Meet for lunch?"; ItemBody body = new ItemBody(); body.contentType = BodyType.TEXT; body.content = "The new cafeteria is open."; message.body = body; LinkedList<Recipient> toRecipientsList = new LinkedList<Recipient>(); Recipient toRecipients = new Recipient(); EmailAddress emailAddress = new EmailAddress(); emailAddress.address = "meganb@contoso.onmicrosoft.com"; toRecipients.emailAddress = emailAddress; toRecipientsList.add(toRecipients); message.toRecipients = toRecipientsList; LinkedList<Attachment> attachmentsList = new LinkedList<Attachment>(); FileAttachment attachments = new FileAttachment(); attachments.name = "attachment.txt"; attachments.contentType = "text/plain"; attachments.contentBytes = Base64.getDecoder().decode("SGVsbG8gV29ybGQh"); attachmentsList.add(attachments); AttachmentCollectionResponse attachmentCollectionResponse = new AttachmentCollectionResponse(); attachmentCollectionResponse.value = attachmentsList; AttachmentCollectionPage attachmentCollectionPage = new AttachmentCollectionPage(attachmentCollectionResponse, null); message.attachments = attachmentCollectionPage; graphClient.me() .sendMail(UserSendMailParameterSet .newBuilder() .withMessage(message) .withSaveToSentItems(null) .build()) .buildRequest() .post(); '@odata.type': '#microsoft.graph.fileAttachment', name: 'attachment.txt', contentType: 'text/plain', contentBytes: 'SGVsbG8gV29ybGQh' await client.api('/me/sendMail') .post(sendMail); // THIS SNIPPET IS A PREVIEW FOR THE KIOTA BASED SDK. NON-PRODUCTION USE ONLY $graphServiceClient = new GraphServiceClient($requestAdapter); $requestBody = new SendMailPostRequestBody(); $message = new Message(); $message->setSubject('Meet for lunch?'); $messageBody = new ItemBody(); $messageBody->setContentType(new BodyType('text')); $messageBody->setContent('The new cafeteria is open.'); $message->setBody($messageBody); $toRecipientsRecipient1 = new Recipient(); $toRecipientsRecipient1EmailAddress = new EmailAddress(); $toRecipientsRecipient1EmailAddress->setAddress('meganb@contoso.onmicrosoft.com'); $toRecipientsRecipient1->setEmailAddress($toRecipientsRecipient1EmailAddress); $toRecipientsArray []= $toRecipientsRecipient1; $message->setToRecipients($toRecipientsArray); $attachmentsAttachment1 = new Attachment(); $attachmentsAttachment1->set@odatatype('#microsoft.graph.fileAttachment'); $attachmentsAttachment1->setName('attachment.txt'); $attachmentsAttachment1->setContentType('text/plain'); $additionalData = [ 'contentBytes' => 'SGVsbG8gV29ybGQh', $attachmentsAttachment1->setAdditionalData($additionalData); $attachmentsArray []= $attachmentsAttachment1; $message->setAttachments($attachmentsArray); $requestBody->setMessage($message); $graphServiceClient->me()->sendMail()->post($requestBody); "@odata.type" = "#microsoft.graph.fileAttachment" name = "attachment.txt" contentType = "text/plain" contentBytes = "SGVsbG8gV29ybGQh" # A UPN can also be used as -UserId. Send-MgUserMail -UserId $userId -BodyParameter $params Content-type: text/plain RnJvbTogQWxleCBXaWxiZXIgPEFsZXhXQGNvbnRvc28uY29tPgpUbzogTWVnYW4gQm93ZW4gPE1l Z2FuQkBjb250b3NvLmNvbT4KU3ViamVjdDogSW50ZXJuYWwgUmVzdW1lIFN1Ym1pc3Npb246IFNh bGVzIEFzc29jaWF0ZQpUaHJlYWQtVG9waWM6IEludGVybmFsIFJlc3VtZSBTdWJtaXNzaW9uOiBT YWxlcyBBc3NvY2lhdGUKVGhyZWFkLUluZGV4OiBjb2RlY29kZWNvZGVoZXJlaGVyZWhlcmUKRGF0 ZTogU3VuLCAyOCBGZWIgMjAyMSAwNzoxNTowMCArMDAwMApNZXNzYWdlLUlEOgoJPE1XSFBSMTMw MU1CMjAwMDAwMDAwRDc2RDlDMjgyMjAwMDA5QUQ5QTlASFdIUFIxMzAxTUIwMDAwLmNvZGVudW0u cHJvZC5vdXRsb29rLmNvbT4KQ29udGVudC1MYW5ndWFnZTogZW4tVVMKWC1NUy1IYXMtQXR0YWNo OgpYLU1TLVRORUYtQ29ycmVsYXRvcjoKWC1NUy1Fe

    下面是一个响应示例。

    HTTP/1.1 202 Accepted
    

    如果请求正文包含错误的 MIME 内容,此方法返回以下错误消息。

    HTTP/1.1 400 Bad Request
    Content-type: application/json
        "error": {
            "code": "ErrorMimeContentInvalidBase64String",
            "message": "Invalid base64 string for MIME content."