Namespace: microsoft.graph
Wichtig
Die APIs unter der /beta Version in Microsoft Graph können sich ändern. Die Verwendung dieser APIs in Produktionsanwendungen wird nicht unterstützt. Um festzustellen, ob eine API in v1.0 verfügbar ist, verwenden Sie die Version Selektor.
Erstellen Sie eine Uploadsitzung, die es einer App ermöglicht, Bereiche einer Datei iterativ hochzuladen, um die Datei an ein Outlook-Element anzufügen. Bei dem Element kann es sich um eine Nachricht oder ein Ereignis handeln.
Verwenden Sie diesen Ansatz zum Anhängen einer Datei, wenn die Dateigröße zwischen 3 MB und 150 MB liegt. Um eine Datei anzufügen, die kleiner als 3 MB ist, führen Sie einen POST Vorgang in der Eigenschaft zur Anlagennavigation des Outlook-Elements aus. Weitere Informationen finden Sie bei einer Nachricht oder einem Ereignis.
Als Teil der Antwort gibt diese Aktion eine Upload-URL zurück, die Sie in nachfolgenden sequenziellen PUT Abfragen verwenden können. Mit Anforderungsheadern für jeden PUT Vorgang können Sie den genauen Bereich der hochzuladenden Bytes angeben. Dadurch kann die Übertragung fortgesetzt werden, falls die Netzwerkverbindung während des Uploads getrennt wird.
Im Folgenden finden Sie die Schritte zum Anfügen einer Datei an ein Outlook-Element mithilfe einer Uploadsitzung:
- Erstellen Sie eine Uploadsitzung.
- Laden Sie innerhalb dieser Uploadsitzung iterativ Bytebereiche (jeweils bis zu 4 MB) hoch, bis alle Bytes der Datei hochgeladen wurden und die Datei an das angegebene Element angefügt ist.
- Speichern Sie die ID für die Anlage für den zukünftigen Zugriff.
- Optional: Löschen Sie die Uploadsitzung.
Ein Beispiel finden Sie unter Anfügen von großen Dateien an Outlook-Nachrichten oder -Ereignisse .
Tipp
Mit Exchange Online können Administratoren das Limit der Nachrichtengröße für Microsoft 365-Postfächer anpassen, einschließlich aller Nachrichtenanlagen. Diese Nachrichtengröße ist standardmäßig auf 35 MB beschränkt. Erfahren Sie, wie Sie die maximale Nachrichtengröße anpassen , um Anlagen zu unterstützen, die größer als das Standardlimit für Ihren Mandanten sind.
Wichtig
Beachten Sie ein bekanntes Problem , wenn Sie eine große Datei an eine Nachricht oder ein Ereignis in einem freigegebenen oder delegierten Postfach anfügen.
Diese API ist in den folgenden nationalen Cloudbereitstellungen verfügbar.
| Weltweiter Service |
US Government L4 |
US Government L5 (DOD) |
China, betrieben von 21Vianet |
| ✅ |
❌ |
❌ |
✅ |
Berechtigungen
Wählen Sie die Berechtigungen aus, die für diese API als am wenigsten privilegiert markiert sind. Verwenden Sie eine höhere Berechtigung oder Berechtigungen nur, wenn Ihre App dies erfordert. Ausführliche Informationen zu delegierten Berechtigungen und Anwendungsberechtigungen finden Sie unter Berechtigungstypen. Weitere Informationen zu diesen Berechtigungen finden Sie in der Berechtigungsreferenz.
| Berechtigungstyp |
Berechtigungen mit den geringsten Berechtigungen |
Berechtigungen mit höheren Berechtigungen |
| Delegiert (Geschäfts-, Schul- oder Unikonto) |
Calendars.ReadWrite |
Mail.ReadWrite |
| Delegiert (persönliches Microsoft-Konto) |
Calendars.ReadWrite |
Mail.ReadWrite |
| Anwendung |
Calendars.ReadWrite |
Mail.ReadWrite |
HTTP-Anforderung
So erstellen Sie eine Uploadsitzung zum Anfügen einer Datei an ein Ereignis:
POST /me/events/{id}/attachments/createUploadSession
So erstellen Sie eine Uploadsitzung zum Anfügen einer Datei an eine Nachricht:
POST /me/messages/{id}/attachments/createUploadSession
Anforderungstext
Geben Sie im Anforderungstext ein JSON-Objekt mit den folgenden Parametern an.
| Parameter |
Typ |
Beschreibung |
| Anlageelement |
AnlageElement |
Stellt Attribute des Elements dar, das hochgeladen und angefügt werden soll. Geben Sie mindestens den Anlagentyp (file), einen Namen und die Größe der Datei an. |
Antwort
Bei erfolgreicher Ausführung gibt diese Methode einen 201 Created Antwortcode und ein neues uploadSession-Objekt im Antworttext zurück.
Hinweis:
Die uploadUrl-Eigenschaft , die als Teil des uploadSession-Antwortobjekts zurückgegeben wird, ist eine nicht transparente URL für nachfolgende PUT Abfragen zum Hochladen von Bytebereichen der Datei. Es enthält das entsprechende Authentifizierungstoken für nachfolgende PUT Abfragen, die durch expirationDateTime ablaufen. Passen Sie diese URL nicht an.
Die nextExpectedRanges-Eigenschaft gibt den nächsten Dateibytespeicherort an, von dem hochgeladen werden soll, "NextExpectedRanges":["2097152"]z. B. Sie müssen die Bytes einer Datei in der korrekten Reihenfolge hochladen.
Beispiele
Beispiel 1: Erstellen einer Uploadsitzung zum Hinzufügen einer großen Anlage zu einem Nachrichtenentwurf
Im folgenden Beispiel wird gezeigt, wie Sie eine Uploadsitzung erstellen, die Sie in nachfolgenden Dateiuploadvorgängen zu der angegebenen Nachricht verwenden können.
Anforderung
POST https://graph.microsoft.com/beta/me/messages/AAMkADI5MAAIT3drCAAA=/attachments/createUploadSession
Content-type: application/json
{
"AttachmentItem": {
"attachmentType": "file",
"name": "flower",
"size": 3483322
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Me.Messages.Item.Attachments.CreateUploadSession;
using Microsoft.Graph.Beta.Models;
var requestBody = new CreateUploadSessionPostRequestBody
{
AttachmentItem = new AttachmentItem
{
AttachmentType = AttachmentType.File,
Name = "flower",
Size = 3483322L,
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.Messages["{message-id}"].Attachments.CreateUploadSession.PostAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-beta-sdk-go/users"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
requestBody := graphusers.NewItemCreateUploadSessionPostRequestBody()
attachmentItem := graphmodels.NewAttachmentItem()
attachmentType := graphmodels.FILE_ATTACHMENTTYPE
attachmentItem.SetAttachmentType(&attachmentType)
name := "flower"
attachmentItem.SetName(&name)
size := int64(3483322)
attachmentItem.SetSize(&size)
requestBody.SetAttachmentItem(attachmentItem)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
createUploadSession, err := graphClient.Me().Messages().ByMessageId("message-id").Attachments().CreateUploadSession().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.users.item.messages.item.attachments.createuploadsession.CreateUploadSessionPostRequestBody createUploadSessionPostRequestBody = new com.microsoft.graph.beta.users.item.messages.item.attachments.createuploadsession.CreateUploadSessionPostRequestBody();
AttachmentItem attachmentItem = new AttachmentItem();
attachmentItem.setAttachmentType(AttachmentType.File);
attachmentItem.setName("flower");
attachmentItem.setSize(3483322L);
createUploadSessionPostRequestBody.setAttachmentItem(attachmentItem);
var result = graphClient.me().messages().byMessageId("{message-id}").attachments().createUploadSession().post(createUploadSessionPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const uploadSession = {
AttachmentItem: {
attachmentType: 'file',
name: 'flower',
size: 3483322
}
};
await client.api('/me/messages/AAMkADI5MAAIT3drCAAA=/attachments/createUploadSession')
.version('beta')
.post(uploadSession);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Users\Item\Messages\Item\Attachments\CreateUploadSession\CreateUploadSessionPostRequestBody;
use Microsoft\Graph\Beta\Generated\Models\AttachmentItem;
use Microsoft\Graph\Beta\Generated\Models\AttachmentType;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new CreateUploadSessionPostRequestBody();
$attachmentItem = new AttachmentItem();
$attachmentItem->setAttachmentType(new AttachmentType('file'));
$attachmentItem->setName('flower');
$attachmentItem->setSize(3483322);
$requestBody->setAttachmentItem($attachmentItem);
$result = $graphServiceClient->me()->messages()->byMessageId('message-id')->attachments()->createUploadSession()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Mail
$params = @{
AttachmentItem = @{
attachmentType = "file"
name = "flower"
size = 3483322
}
}
# A UPN can also be used as -UserId.
New-MgBetaUserMessageAttachmentUploadSession -UserId $userId -MessageId $messageId -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.users.item.messages.item.attachments.create_upload_session.create_upload_session_post_request_body import CreateUploadSessionPostRequestBody
from msgraph_beta.generated.models.attachment_item import AttachmentItem
from msgraph_beta.generated.models.attachment_type import AttachmentType
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = CreateUploadSessionPostRequestBody(
attachment_item = AttachmentItem(
attachment_type = AttachmentType.File,
name = "flower",
size = 3483322,
),
)
result = await graph_client.me.messages.by_message_id('message-id').attachments.create_upload_session.post(request_body)
Antwort
Hinweis: Das hier gezeigte Antwortobjekt kann zur besseren Lesbarkeit gekürzt werden.
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#microsoft.graph.uploadSession",
"uploadUrl": "https://outlook.office.com/api/beta/Users('a8e8e219-4931-95c1-b73d-62626fd79c32@72aa88bf-76f0-494f-91ab-2d7cd730db47')/Messages('AAMkADI5MAAIT3drCAAA=')/AttachmentSessions('AAMkADI5MAAIT3k0uAAA=')?authtoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IktmYUNIUlN6bllHMmNI",
"expirationDateTime": "2019-09-25T01:09:30.7671707Z",
"nextExpectedRanges": [
"0-"
]
}
Beispiel 2: Erstellen einer Uploadsitzung, um einem Nachrichtenentwurf eine große Inline-Anlage hinzuzufügen
Im folgenden Beispiel wird gezeigt, wie Sie eine Uploadsitzung erstellen, die verwendet werden kann, um einem Nachrichtenentwurf eine große Inlineanlage hinzuzufügen.
Legen Sie für eine Inline-Anlage die isInline-Eigenschaft auf true und verwenden Sie die contentId-Eigenschaft , um eine CID für die Anlage anzugeben, wie unten dargestellt. Verwenden Sie im Nachrichtentext den gleichen CID-Wert, um die Position anzugeben, an der Sie die Anlage einfügen möchten, z. B <img src="cid:my_inline_picture">. mit einem CID-HTML-Referenztag. Nach erfolgreichem Hochladen der Datei enthält die gerenderte Nachricht die Anlage als Teil des Nachrichtentexts am angegebenen Speicherort.
Anforderung
POST https://graph.microsoft.com/beta/me/messages/AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=/attachments/createUploadSession
Content-type: application/json
{
"AttachmentItem": {
"attachmentType": "file",
"name": "scenary",
"size": 7208534,
"isInline": true,
"contentId": "my_inline_picture"
}
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Me.Messages.Item.Attachments.CreateUploadSession;
using Microsoft.Graph.Beta.Models;
var requestBody = new CreateUploadSessionPostRequestBody
{
AttachmentItem = new AttachmentItem
{
AttachmentType = AttachmentType.File,
Name = "scenary",
Size = 7208534L,
IsInline = true,
ContentId = "my_inline_picture",
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.Messages["{message-id}"].Attachments.CreateUploadSession.PostAsync(requestBody);
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphusers "github.com/microsoftgraph/msgraph-beta-sdk-go/users"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
requestBody := graphusers.NewItemCreateUploadSessionPostRequestBody()
attachmentItem := graphmodels.NewAttachmentItem()
attachmentType := graphmodels.FILE_ATTACHMENTTYPE
attachmentItem.SetAttachmentType(&attachmentType)
name := "scenary"
attachmentItem.SetName(&name)
size := int64(7208534)
attachmentItem.SetSize(&size)
isInline := true
attachmentItem.SetIsInline(&isInline)
contentId := "my_inline_picture"
attachmentItem.SetContentId(&contentId)
requestBody.SetAttachmentItem(attachmentItem)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
createUploadSession, err := graphClient.Me().Messages().ByMessageId("message-id").Attachments().CreateUploadSession().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
com.microsoft.graph.beta.users.item.messages.item.attachments.createuploadsession.CreateUploadSessionPostRequestBody createUploadSessionPostRequestBody = new com.microsoft.graph.beta.users.item.messages.item.attachments.createuploadsession.CreateUploadSessionPostRequestBody();
AttachmentItem attachmentItem = new AttachmentItem();
attachmentItem.setAttachmentType(AttachmentType.File);
attachmentItem.setName("scenary");
attachmentItem.setSize(7208534L);
attachmentItem.setIsInline(true);
attachmentItem.setContentId("my_inline_picture");
createUploadSessionPostRequestBody.setAttachmentItem(attachmentItem);
var result = graphClient.me().messages().byMessageId("{message-id}").attachments().createUploadSession().post(createUploadSessionPostRequestBody);
const options = {
authProvider,
};
const client = Client.init(options);
const uploadSession = {
AttachmentItem: {
attachmentType: 'file',
name: 'scenary',
size: 7208534,
isInline: true,
contentId: 'my_inline_picture'
}
};
await client.api('/me/messages/AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=/attachments/createUploadSession')
.version('beta')
.post(uploadSession);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Users\Item\Messages\Item\Attachments\CreateUploadSession\CreateUploadSessionPostRequestBody;
use Microsoft\Graph\Beta\Generated\Models\AttachmentItem;
use Microsoft\Graph\Beta\Generated\Models\AttachmentType;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new CreateUploadSessionPostRequestBody();
$attachmentItem = new AttachmentItem();
$attachmentItem->setAttachmentType(new AttachmentType('file'));
$attachmentItem->setName('scenary');
$attachmentItem->setSize(7208534);
$attachmentItem->setIsInline(true);
$attachmentItem->setContentId('my_inline_picture');
$requestBody->setAttachmentItem($attachmentItem);
$result = $graphServiceClient->me()->messages()->byMessageId('message-id')->attachments()->createUploadSession()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Mail
$params = @{
AttachmentItem = @{
attachmentType = "file"
name = "scenary"
size = 7208534
isInline = $true
contentId = "my_inline_picture"
}
}
# A UPN can also be used as -UserId.
New-MgBetaUserMessageAttachmentUploadSession -UserId $userId -MessageId $messageId -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.users.item.messages.item.attachments.create_upload_session.create_upload_session_post_request_body import CreateUploadSessionPostRequestBody
from msgraph_beta.generated.models.attachment_item import AttachmentItem
from msgraph_beta.generated.models.attachment_type import AttachmentType
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = CreateUploadSessionPostRequestBody(
attachment_item = AttachmentItem(
attachment_type = AttachmentType.File,
name = "scenary",
size = 7208534,
is_inline = True,
content_id = "my_inline_picture",
),
)
result = await graph_client.me.messages.by_message_id('message-id').attachments.create_upload_session.post(request_body)
Antwort
Hinweis: Das hier gezeigte Antwortobjekt kann zur besseren Lesbarkeit gekürzt werden.
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.uploadSession",
"uploadUrl": "https://outlook.office.com/api/gv1.0/users('a8e8e219-4931-95c1-b73d-62626fd79c32@72aa88bf-76f0-494f-91ab-2d7cd730db47')/messages('AAMkAGUwNjQ4ZjIxLTQ3Y2YtNDViMi1iZjc4LTMA=')/AttachmentSessions('AAMkAGUwNjQ4ZjIxLTAAA=')?authtoken=eyJhbGciOiJSUzI1NiIsImtpZCI6IjFTeXQ1bXdXYVh5UFJ",
"expirationDateTime": "2021-12-27T14:20:12.9708933Z",
"nextExpectedRanges": [
"0-"
]
}