Obter anexo
Namespace: microsoft.graph
Leia as propriedades, os relacionamentos ou o conteúdo bruto de um anexo que está vinculado a um usuário evento, mensagem, ou postagem de grupo.
Um anexo pode ser de um dos seguintes tipos:
- Um arquivo. Programaticamente, este é um recurso fileAttachment. Veja exemplo 1.
- Um item do Outlook (contato, evento ou mensagem). Programaticamente, um anexo de item é um recurso itemAttachment. Você pode usar
$expand
para obter ainda mais as propriedades desse item, incluindo quaisquer anexos aninhados em até 30 níveis. Veja o exemplo 3 e o exemplo 4. - Um link para um arquivo armazenado na nuvem. Programaticamente, este é um recurso referenceAttachment. Veja oexemplo 5.
Todos esses tipos de anexos são derivados do recurso anexo.
Esta API está disponível nas seguintes implementações de cloud nacionais.
Serviço global | US Government L4 | US Government L5 (DOD) | China operada pela 21Vianet |
---|---|---|---|
✅ | ✅ | ✅ | ✅ |
Obter o conteúdo bruto de um arquivo ou anexo de item
Você pode anexar o segmento do caminho /$value
para obter o conteúdo bruto de um arquivo ou anexo de item.
Para um anexo de arquivo, o tipo de conteúdo é baseado no tipo de conteúdo original. Veja oexemplo 6.
Para um anexo de item que é um contato, evento ou mensagem, o conteúdo bruto retornado está no formato MIME.
Tipo de anexo do item | Conteúdo bruto retornado |
---|---|
contato | Formato vCard MIME. Confira um exemplo. |
event | Formato iCal MIME. Confira um exemplo. |
message | Formato MIME. Confira um exemplo. |
A tentativa de obter o $value
de um anexo de referência retorna HTTP 405.
Observação
Quando determinados ficheiros são solicitados, o MIME pode codificar a saída de fluxo de bytes na resposta e fornecer uma ligação para transferir o ficheiro como um anexo de e-mail.
Permissões
Dependendo do recurso (evento, mensagem ou postagem) ao qual o anexo está anexado e do tipo de permissão (delegado ou aplicativo) solicitado, a permissão especificada na tabela a seguir é a menos privilegiada necessária para fazer chamadas a esta API. Para saber mais, incluindo tomar cuidado antes de escolher as permissões mais privilegiadas, pesquise as seguintes permissões em Permissões.
Recurso com suporte | Delegada (conta corporativa ou de estudante) | Delegada (conta pessoal da Microsoft) | Aplicativo |
---|---|---|---|
evento | Calendars.Read | Calendars.Read | Calendars.Read |
message | Mail.Read | Mail.Read | Mail.Read |
postagem | Group.Read.All | Sem suporte | Sem suporte |
Solicitação HTTP
Esta seção mostra a sintaxe da solicitação HTTP GET para cada uma das entidades (evento, mensagem e postagem) que oferecem suporte a anexos:
- Para obter as propriedades e os relacionamentos de um anexo, especifique o ID do anexo a ser indexado na coleção de anexos, anexada ao evento, mensagem ou instância de postagem especificada.
- Se o anexo for um arquivo ou item do Outlook (contato, evento ou mensagem), você poderá obter ainda mais o conteúdo bruto do anexo anexando o segmento de caminho
/$value
à URL da solicitação.
Anexos de um event no calendar padrão do usuário.
GET /me/events/{id}/attachments/{id}
GET /users/{id | userPrincipalName}/events/{id}/attachments/{id}
GET /me/events/{id}/attachments/{id}/$value
GET /users/{id | userPrincipalName}/events/{id}/attachments/{id}/$value
Anexos para um evento no calendário do usuário especificado.
GET /me/calendars/{id}/events/{id}/attachments/{id}
GET /users/{id | userPrincipalName}/calendars/{id}/events/{id}/attachments/{id}
GET /me/calendars/{id}/events/{id}/attachments/{id}/$value
GET /users/{id | userPrincipalName}/calendars/{id}/events/{id}/attachments/{id}/$value
Anexos de um event em um calendar que pertence a um calendarGroup de um usuário.
GET /me/calendarGroups/{id}/calendars/{id}/events/{id}/attachments/{id}
GET /users/{id | userPrincipalName}/calendarGroups/{id}/calendars/{id}/events/{id}/attachments/{id}
GET /me/calendarGroups/{id}/calendars/{id}/events/{id}/attachments/{id}/$value
GET /users/{id | userPrincipalName}/calendarGroups/{id}/calendars/{id}/events/{id}/attachments/{id}/$value
Anexos de uma message em uma caixa de correio de usuário.
GET /me/messages/{id}/attachments/{id}
GET /users/{id | userPrincipalName}/messages/{id}/attachments/{id}
GET /me/messages/{id}/attachments/{id}/$value
GET /users/{id | userPrincipalName}/messages/{id}/attachments/{id}/$value
Anexos de uma message contidos em uma mailFolder de nível superior na caixa de correio de um usuário.
GET /me/mailFolders/{id}/messages/{id}/attachments/{id}
GET /users/{id | userPrincipalName}/mailFolders/{id}/messages/{id}/attachments/{id}
GET /me/mailFolders/{id}/messages/{id}/attachments/{id}/$value
GET /users/{id | userPrincipalName}/mailFolders/{id}/messages/{id}/attachments/{id}/$value
Anexos de uma message contidos em uma pasta filha de uma mailFolder na caixa de correio de um usuário. O exemplo a seguir mostra um nível de aninhamento, mas uma mensagem pode estar localizada em um filho de um filho, e assim por diante.
GET /me/mailFolders/{id}/childFolders/{id}/.../messages/{id}/attachments/{id}
GET /users/{id | userPrincipalName}/mailFolders/{id}/childFolders/{id}/messages/{id}/attachments/{id}
GET /me/mailFolders/{id}/childFolders/{id}/.../messages/{id}/attachments/{id}/$value
GET /users/{id | userPrincipalName}/mailFolders/{id}/childFolders/{id}/messages/{id}/attachments/{id}/$value
Anexos de uma post em um thread que pertence a uma conversation de um grupo.
GET /groups/{id}/threads/{id}/posts/{id}/attachments/{id}
GET /groups/{id}/conversations/{id}/threads/{id}/posts/{id}/attachments/{id}
GET /groups/{id}/threads/{id}/posts/{id}/attachments/{id}/$value
GET /groups/{id}/conversations/{id}/threads/{id}/posts/{id}/attachments/{id}/$value
Parâmetros de consulta opcionais
Este método também dá suporte a alguns Parâmetros de Consulta OData para ajudar a personalizar a resposta.
Use $expand
para obter as propriedades de um anexo de item (contato, evento ou mensagem). Veja o exemplo 3 e o exemplo 4.
Cabeçalhos de solicitação
Nome | Tipo | Descrição |
---|---|---|
Autorização | string | {token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização. |
Corpo da solicitação
Não forneça um corpo de solicitação para esse método.
Resposta
Se tiver êxito, este método retornará um código de resposta 200 OK
.
Se você estiver obtendo as propriedades e os relacionamentos de um anexo, o corpo da resposta incluirá um objeto de anexo. As propriedades desse tipo de anexo são retornadas: fileAttachment, itemAttachment ou referenceAttachment.
Se você estiver obtendo o conteúdo bruto de um anexo de arquivo ou de item, o corpo da resposta incluirá o valor bruto do anexo.
Exemplos
Exemplo 1: Obter as propriedades de um anexo de arquivo
Solicitação
O exemplo seguinte mostra um pedido para obter um anexo de ficheiro num evento.
GET https://graph.microsoft.com/v1.0/me/messages/AAMkAGUzY5QKjAAA=/attachments/AAMkAGUzY5QKjAAABEgAQAMkpJI_X-LBFgvrv1PlZYd8=
Resposta
O exemplo a seguir mostra a resposta. Observação: o objeto de resposta exibido aqui pode ser encurtado para legibilidade.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('bb8775a4-4d8c-42cf-a1d4-4d58c2bb668f')/messages('AAMkAGUzY5QKjAAA%3D')/attachments/$entity",
"@odata.type": "#microsoft.graph.fileAttachment",
"id": "AAMkAGUzY5QKjAAABEgAQAMkpJI_X-LBFgvrv1PlZYd8=",
"lastModifiedDateTime": "2019-04-02T03:41:29Z",
"name": "Draft sales invoice template.docx",
"contentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"size": 13068,
"isInline": false,
"contentId": null,
"contentLocation": null,
"contentBytes": "UEsDBBQABgAIAAAAIQ4AAAAA"
}
Exemplo 2: Obter as propriedades de um anexo de item
Solicitação
O próximo exemplo mostra como obter um anexo de item em uma mensagem. As propriedades de itemAttachment são retornadas.
GET https://graph.microsoft.com/v1.0/me/messages/AAMkADA1M-zAAA=/attachments/AAMkADA1M-CJKtzmnlcqVgqI=
Resposta
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users('d1a2fae9-db66-4cc9-8133-2184c77af1b8')/messages('AAMkADA1M-zAAA%3D')/attachments/$entity",
"@odata.type":"#microsoft.graph.itemAttachment",
"id":"AAMkADA1MCJKtzmnlcqVgqI=",
"lastModifiedDateTime":"2017-07-21T00:20:34Z",
"name":"Reminder - please bring laptop",
"contentType":null,
"size":32005,
"isInline":false
}
Exemplo 3: Expandir e obter as propriedades do item anexado a uma mensagem
Solicitação
O próximo exemplo mostra como usar $expand
para obter as propriedades do item (contato, evento ou mensagem) anexado à mensagem. Neste exemplo, esse item é uma mensagem. As propriedades dessa mensagem anexadas também são retornadas.
GET https://graph.microsoft.com/v1.0/me/messages/AAMkADA1M-zAAA=/attachments/AAMkADA1M-CJKtzmnlcqVgqI=/?$expand=microsoft.graph.itemattachment/item
Resposta
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#users('d1a2fae9-db66-4cc9-8133-2184c77af1b8')/messages('AAMkADA1M-zAAA%3D')/attachments/$entity",
"@odata.type":"#microsoft.graph.itemAttachment",
"id":"AAMkADA1MCJKtzmnlcqVgqI=",
"lastModifiedDateTime":"2017-07-21T00:20:34Z",
"name":"Reminder - please bring laptop",
"contentType":null,
"size":32005,
"isInline":false,
"item":{
"@odata.type":"#microsoft.graph.message",
"id":"",
"createdDateTime":"2017-07-21T00:20:41Z",
"lastModifiedDateTime":"2017-07-21T00:20:34Z",
"receivedDateTime":"2017-07-21T00:19:55Z",
"sentDateTime":"2017-07-21T00:19:52Z",
"hasAttachments":false,
"internetMessageId":"<BY2PR15MB05189A084C01F466709E414F9CA40@BY2PR15MB0518.namprd15.prod.outlook.com>",
"subject":"Reminder - please bring laptop",
"bodyPreview": "PFA\r\n\r\nThanks,\r\nRob",
"importance":"normal",
"conversationId":"AAQkADA1MzMyOGI4LTlkZDctNDkzYy05M2RiLTdiN2E1NDE3MTRkOQAQAMG_NSCMBqdKrLa2EmR-lO0=",
"conversationIndex":"AQHTAbcSwb41IIwGp0qstrYSZH+U7Q==",
"isDeliveryReceiptRequested":false,
"isReadReceiptRequested":false,
"isRead":false,
"isDraft":false,
"webLink":"https://outlook.office365.com/owa/?ItemID=AAMkADA1M3MTRkOQAAAA%3D%3D&exvsurl=1&viewmodel=ReadMessageItem",
"internetMessageHeaders": [ ],
"body":{
"contentType":"html",
"content":"<html><head>\r\n</head>\r\n<body>\r\n</body>\r\n</html>"
},
"sender":{
"emailAddress":{
"name":"Adele Vance",
"address":"AdeleV@contoso.com"
}
},
"from":{
"emailAddress":{
"name":"Adele Vance",
"address":"AdeleV@contoso.com"
}
},
"toRecipients":[
{
"emailAddress":{
"name":"Alex Wilbur",
"address":"AlexW@contoso.com"
}
}
],
"ccRecipients":[
{
"emailAddress":{
"name":"Adele Vance",
"address":"AdeleV@contoso.com"
}
}
],
"flag":{
"flagStatus":"notFlagged"
}
}
}
Exemplo 4: Expanda e obtenha as propriedades de um item anexado a uma mensagem, incluindo qualquer anexo do item
Solicitação
O próximo exemplo usa a mesma solicitação do exemplo 3 para obter as propriedades de um anexo de item em uma mensagem usando $expand
. Nesse caso, como o item anexado também contém um anexo de arquivo, a resposta também inclui as propriedades do anexo de arquivo.
GET https://graph.microsoft.com/v1.0/me/messages/AAMkADA1M-zAAA=/attachments/AAMkADA1M-CJKtzmnlcqVgqI=/?$expand=microsoft.graph.itemattachment/item
Resposta
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#users('d1a2fae9-db66-4cc9-8133-2184c77af1b8')/messages('AAMkADA1M-zAAA%3D')/attachments(microsoft.graph.itemAttachment/item())/$entity",
"@odata.type": "#microsoft.graph.itemAttachment",
"id": "AAMkADA1MCJKtzmnlcqVgqI=",
"lastModifiedDateTime": "2021-01-06T13:28:11Z",
"name": "Nested Message With Attachment",
"contentType": null,
"size": 465916,
"isInline": false,
"item": {
"@odata.type": "#microsoft.graph.message",
"id": "",
"createdDateTime": "2021-01-06T13:28:30Z",
"lastModifiedDateTime": "2021-01-06T13:27:40Z",
"receivedDateTime": "2021-01-06T13:27:25Z",
"sentDateTime": "2021-01-06T13:27:04Z",
"hasAttachments": true,
"internetMessageId": "<BY2PR15MB05189A084C01F466709E414F9CA40@BY2PR15MB0518.namprd15.prod.outlook.com>",
"subject": "Nested Message With Attachment",
"bodyPreview": "PFAThanks,Adele",
"importance": "normal",
"conversationId": "AAQkADg3NTY5MDg4LWMzYmQtNDQzNi05OTgwLWQyZjg2YWQwMTNkZAAQAO6hkp84oMdGm6ZBsSH72sE=",
"conversationIndex": "AQHW5C+U7qGSnzigx0abpkGxIfvawQ==",
"isDeliveryReceiptRequested": false,
"isReadReceiptRequested": false,
"isRead": true,
"isDraft": false,
"webLink": "https://outlook.office365.com/owa/?ItemID=AAMkADA1M3MTRkOQAAAA%3D%3D&exvsurl=1&viewmodel=ItemAttachment",
"internetMessageHeaders": [],
"body": {
"contentType": "html",
"content": "<html><head>\r\n</head>\r\n<body>\r\n</body>\r\n</html>"
},
"sender": {
"emailAddress": {
"name": "Adele Vance",
"address": "Adele.Vance@microsoft.com"
}
},
"from": {
"emailAddress": {
"name": "Adele Vance",
"address": "Adele.Vance@microsoft.com"
}
},
"toRecipients": [
{
"emailAddress": {
"name": "Adele Vance",
"address": "Adele.Vance@microsoft.com"
}
}
],
"flag": {
"flagStatus": "notFlagged"
},
"attachments": [
{
"@odata.type": "#microsoft.graph.fileAttachment",
"@odata.mediaContentType": "application/pdf",
"id": "AAMkADg3NTYULmbsDYNg==",
"lastModifiedDateTime": "2021-01-21T14:56:18Z",
"name": "Info.pdf",
"contentType": "application/pdf",
"size": 417351,
"isInline": false,
"contentId": null,
"contentLocation": null,
"contentBytes": "JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhlbi1JTikgL1N0cnVjdFRyZWVSb29"
}
]
}
}
Exemplo 5: Obtenha as propriedades de um anexo de referência
Solicitação
O exemplo seguinte mostra um pedido para obter um anexo de referência numa mensagem.
GET https://graph.microsoft.com/v1.0/me/messages/AAMkAGUzY5QKgAAA=/attachments/AAMkAGUzY5QKgAAABEgAQAISJOe1FEqdNsMEQmpZjRW8=
Resposta
O exemplo a seguir mostra a resposta. Observação: o objeto de resposta exibido aqui pode ser encurtado para legibilidade.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('bb8775a4-4d8c-42cf-a1d4-4d58c2bb668f')/messages('AAMkAGUzY5QKgAAA%3D')/attachments/$entity",
"@odata.type": "#microsoft.graph.referenceAttachment",
"id": "AAMkAGUzY5QKgAAABEgAQAISJOe1FEqdNsMEQmpZjRW8=",
"lastModifiedDateTime": "2019-04-02T02:58:11Z",
"name": "Sales Invoice Template.docx",
"contentType": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"size": 1060,
"isInline": true
}
Exemplo 6: Obtenha o conteúdo bruto de um anexo de arquivo em uma mensagem
Solicitação
O exemplo seguinte mostra um pedido para obter os conteúdos não processados de um ficheiro do Word que foi anexado a uma mensagem.
GET https://graph.microsoft.com/v1.0/me/messages/AAMkAGUzY5QKjAAA=/attachments/AAMkAGUzY5QKjAAABEgAQAMkpJI_X-LBFgvrv1PlZYd8=/$value
Resposta
O exemplo a seguir mostra a resposta. O corpo da resposta real inclui os bytes brutos do anexo do arquivo, que são abreviados aqui por questões de brevidade.
HTTP/1.1 200 OK
{Raw bytes of the file}
Exemplo 7: Obtenha o conteúdo bruto MIME de um anexo de contato em uma mensagem
Solicitação
O exemplo seguinte mostra um pedido para obter o conteúdo não processado de um item de contacto que foi anexado a uma mensagem.
GET https://graph.microsoft.com/v1.0/me/messages/AAMkADI5MAAGjk2PxAAA=/attachments/AAMkADI5MAAGjk2PxAAABEgAQACEJqrbJZBNIlr3pGFvd9K8=/$value
Resposta
O exemplo a seguir mostra a resposta.
HTTP/1.1 200 OK
BEGIN:VCARD
PROFILE:VCARD
VERSION:3.0
MAILER:Microsoft Exchange
PRODID:Microsoft Exchange
FN:Alex Wilbur
N:Wilbur;Alex;;;
NOTE:Sunday\, June 10\, 2012 5:44 PM:\nGutter\, window cleaning\, pressure
washing\, roof debris blowing\n
ORG:Contoso;
CLASS:PUBLIC
ADR;TYPE=WORK,PREF:;;4567 Main St;Buffalo;NY;98052;United States of America
LABEL;TYPE=WORK,PREF:4567 Main St\nBuffalo\, NY 98052
ADR;TYPE=HOME:;;;;;;
ADR;TYPE=POSTAL:;;;;;;
TEL;TYPE=WORK:(425) 555-0100
TITLE:
X-MS-IMADDRESS:
REV;VALUE=DATE-TIME:2019-04-09T02:13:31,161Z
END:VCARD
Exemplo 8: Obtenha o conteúdo bruto MIME de um anexo de evento em uma mensagem
Solicitação
O exemplo seguinte mostra um pedido para obter o conteúdo não processado de um evento que foi anexado a uma mensagem.
GET https://graph.microsoft.com/v1.0/me/messages/AAMkADVIOAAA=/attachments/AAMkADVIOAAABEgAQACvkutl6c4FMifPyS6NvXsM=/$value
Resposta
O exemplo a seguir mostra a resposta.
HTTP/1.1 200 OK
BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Pacific Standard Time
BEGIN:STANDARD
DTSTART:16010101T020000
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=1SU;BYMONTH=11
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=2SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
ORGANIZER;CN=Adele Vance:MAILTO:adelev@contoso.com
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Adele Vance:MAILTO:adelev@contoso.com
DESCRIPTION;LANGUAGE=en-US:\n
UID:040000008200
SUMMARY;LANGUAGE=en-US:Review Megan's docs
DTSTART;TZID=Pacific Standard Time:20190409T140000
DTEND;TZID=Pacific Standard Time:20190409T160000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20190409T211833Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION;LANGUAGE=en-US:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-OWNERAPPTID:0
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:0
X-MICROSOFT-DONOTFORWARDMEETING:FALSE
X-MICROSOFT-DISALLOW-COUNTER:FALSE
X-MICROSOFT-LOCATIONS:[]
BEGIN:VALARM
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
ACTION:DISPLAY
END:VALARM
END:VEVENT
END:VCALENDAR
Exemplo 9: Obtenha o conteúdo bruto MIME de um anexo de item de convite de reunião em uma mensagem
Solicitação
O exemplo seguinte mostra um pedido para obter o conteúdo não processado de um convite para reunião (do tipo eventMessage ) que foi anexado a uma mensagem. A entidade eventMessage é baseada no tipo de mensagem.
GET https://graph.microsoft.com/v1.0/me/messages/AAMkAGUzY5QKiAAA=/attachments/AAMkAGUzY5QKiAAABEgAQAK8ktgiIO19OqkvUZAqLmyQ=/$value
Resposta
O exemplo a seguir mostra a resposta.
O corpo da resposta inclui o anexo eventMessage no formato MIME. O corpo do eventMessage é truncado para brevidade. O corpo completo da mensagem é retornado de uma chamada real.
HTTP/1.1 200 OK
From: Megan Bowen <MeganB@contoso.com>
To: Adele Vance <AdeleV@contoso.com>
Subject: Let's go for lunch
Thread-Topic: Let's go for lunch
Thread-Index: AdTPqxOmg4AXoJV960a1j5NrJCHYjA==
X-MS-Exchange-MessageSentRepresentingType: 1
Date: Thu, 28 Feb 2019 21:17:58 +0000
Message-ID:
<CY4PR2201MB1046E9C83FC42478EF4EE283C9750@CY4PR2201MB1046.namprd22.prod.outlook.com>
Content-Language: en-US
X-MS-Has-Attach:
X-MS-Exchange-Organization-SCL: -1
X-MS-TNEF-Correlator:
X-MS-Exchange-Organization-RecordReviewCfmType: 0
Content-Type: multipart/alternative;
boundary="_000_CY4PR2201MB1046E9C83FC42478EF4EE283C9750CY4PR2201MB1046_"
MIME-Version: 1.0
--_000_CY4PR2201MB1046E9C83FC42478EF4EE283C9750CY4PR2201MB1046_
Content-Type: text/plain; charset="us-ascii"
Does mid month work for you?
--_000_CY4PR2201MB1046E9C83FC42478EF4EE283C9750CY4PR2201MB1046_
Content-Type: text/html; charset="us-ascii"
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
Does mid month work for you?
</body>
</html>
--_000_CY4PR2201MB1046E9C83FC42478EF4EE283C9750CY4PR2201MB1046_
Content-Type: text/calendar; charset="utf-8"; method=REQUEST
Content-Transfer-Encoding: base64
QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVRVUVTVA0KUFJPRElEOk1pY3Jvc29mdCBFeGNoYW5n
--_000_CY4PR2201MB1046E9C83FC42478EF4EE283C9750CY4PR2201MB1046_--