2017-02-21 23 views
0
using Microsoft.Graph 
IMessageAttachmentsCollectionPage Message.Attachments 

Я не могу заставить это взять любые «ContentBytes», которые находятся в файле FileAttachment.ContentBytes.Microsoft.Graph отправляет почту с приложением

Мой образец от Microsoft https://github.com/microsoftgraph/aspnet-snippets-sample.

 // Create the message. 
     Message email = new Message 
     { 
      Body = new ItemBody 
      { 
       Content = Resource.Prop_Body + guid, 
       ContentType = BodyType.Text, 
      }, 
      Subject = Resource.Prop_Subject + guid.Substring(0, 8), 
      ToRecipients = recipients, 
      HasAttachments = true, 
      Attachments = new[] 

       { 

        new FileAttachment 

        { 

         ODataType = "#microsoft.graph.fileAttachment", 

         ContentBytes = contentBytes, 

         ContentType = contentType, 

         ContentId = "testing", 

         Name = "tesing.png" 

        } 

       } 
     }; 
+0

Хотите сделать ясным или мне ясно, что Ассамблея Microsoft.Graph, Version = 1.2.0.0 устанавливает свойство JSON для вложений. Таким образом, если вы используете его, вы не можете отправлять вложения с ним. :) Если бы я сказал это правильно, потому что Microsoft.graph.FileAttachment не может преобразовать в Microsoft.Graph.IMessageAttachmentsCollectionPage. – twc

ответ

0

Используя выше от GitHub образца это разрешенное, смотрите ниже:

// Create the message with attachment. 
byte[] contentBytes = System.IO.File.ReadAllBytes(@"C:\test\test.png"); 
string contentType = "image/png"; 
MessageAttachmentsCollectionPage attachments = new MessageAttachmentsCollectionPage(); 
attachments.Add(new FileAttachment 
{ 
    ODataType = "#microsoft.graph.fileAttachment", 
    ContentBytes = contentBytes, 
    ContentType = contentType, 
    ContentId = "testing", 
    Name = "testing.png" 
}); 
Message email = new Message 
{ 
    Body = new ItemBody 
    { 
     Content = Resource.Prop_Body + guid, 
     ContentType = BodyType.Text, 
    }, 
    Subject = Resource.Prop_Subject + guid.Substring(0, 8), 
    ToRecipients = recipients, 
    Attachments = attachments 
}; 

// Send the message. 
await graphClient.Me.SendMail(email, true).Request().PostAsync(); 
+0

ПРИМЕЧАНИЕ: ограничение 4 МБ с использованием этого метода: https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/message_post_attachments Так как в настоящее время существует ограничение на 4 МБ общего размера каждого запроса REST, это ограничивает размер вложения, которое вы можете добавить ниже 4 МБ. – twc

0

Я не совсем уверен, что именно происходит здесь, не видя следов того, что создается в запросе, сообщение об ошибке или код состояния HTTP. Я знаю, что вы не можете установить свойство HasAttachments, это свойство задается службой. О, проблема здесь в том, что вы устанавливаете свойство Message.Attachments как новое [] вместо новое MessageAttachmentsCollectionPage. С учетом сказанного, я просто запускал следующий код, и он работал так, как ожидалось, поэтому мы знаем, что служба будет работать для этого сценария.

 var message = await createEmail("Sent from the MailSendMailWithAttachment test."); 

     var attachment = new FileAttachment(); 
     attachment.ODataType = "#microsoft.graph.fileAttachment"; 
     attachment.Name = "MyFileAttachment.txt"; 
     attachment.ContentBytes = Microsoft.Graph.Test.Properties.Resources.textfile; 

     message.Attachments = new MessageAttachmentsCollectionPage(); 
     message.Attachments.Add(attachment); 

     await graphClient.Me.SendMail(message, true).Request().PostAsync(); 

Надеюсь, это поможет вам сэкономить время.

Обновление: Это использование Microsoft.Graph.

+0

Я использую Microsoft.graph и имеет вложения – twc

+0

Я использую Microsoft.Graph и имеет [JsonProperty (NullValueHandling = NullValueHandling.Ignore, PropertyName = "вложения", Required = Required.Default)] public IMessageAttachmentsCollectionPage Attachments, поэтому я делаю не вижу, как я могу использовать ваше вложение.ODataType ... Tim: – twc

+0

Я не вижу, как ваше решение работает из-за того, что я не знаю, использует ли ваш Microsoft.Graph или использует Newtonsoft.Json - я использую ТОЛЬКО Microsoft .Graph и он ловушки вас не может Implicily конвертировать Microsoft.graph.FileAttachment в Microsoft.graph.IMessageAttachmentsCollectionPage – twc