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

Ich kann nicht scheinen, um dies zu nehmen, "ContentBytes", die in der FileAttachment.ContentBytes ist.Microsoft.Graph send mail mit Anhang

Mein Beispiel stammt von 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

klar oder mir klar machen Möchten Sie, dass Assembly Microsoft.Graph, Version = 1.2.0.0 die JSON-Eigenschaft für Attachments setzt. Wenn Sie es also verwenden, können Sie Anhänge nicht senden, wenn Sie es verwenden. :) Wenn ich das richtig gesagt habe, weil Microsoft.graph.FileAttachment nicht in Microsoft.Graph.IMessageAttachmentsCollectionPage konvertieren kann. – twc

Antwort

0

Unter Verwendung der Probe oberhalb von GitHub dieses Problem gelöst wird, siehe unten:

// 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

HINWEIS: 4 MB Limit mit dieser Methode: https://graph.microsoft.io/en-us/docs/api-reference/v1.0/api/message_post_attachments Da die Gesamtgröße jeder REST-Anforderung derzeit auf 4 MB beschränkt ist, wird dadurch die Größe der Anlage, die Sie hinzufügen können, auf weniger als 4 MB beschränkt. – twc

0

Ich bin nicht ganz sicher, was genau hier vor sich geht, ohne eine Spur zu sehen, was in der Anforderung, eine Fehlermeldung gesetzt wird, oder einen HTTP-Statuscode. Ich weiß, dass Sie die Eigenschaft HasAttachments nicht festlegen können, diese Eigenschaft wird nur vom Dienst festgelegt. Oh, das Problem hier ist, dass Sie die Message.Attachments -Eigenschaft als new [] anstelle einer neuen MessageAttachmentsCollectionPage setzen. Nachdem das gesagt wurde, habe ich einfach den folgenden Code ausgeführt und es hat wie erwartet funktioniert, so dass wir wissen, dass der Dienst für dieses Szenario funktionieren wird.

 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(); 

Ich hoffe, das hilft und spart Ihnen Zeit.

Aktualisierung: Dies verwendet Microsoft.Graph.

+0

Ich benutze Microsoft.graph und es hat Anhänge – twc

+0

Ich benutze Microsoft.Graph und es hat [JsonProperty (NullValueHandling = NullValueHandling.Ignore, PropertyName = "Anlagen", Erforderlich = Erforderlich.Default)] öffentliche IMessageAttachmentsCollectionPage-Anlagen, damit ich nicht sehen, wie ich Ihre Anlage verwenden kann.ODataType ... Tim: – twc

+0

Ich sehe nicht, wie Ihre Lösung funktioniert, weil ich nicht weiß, ob Sie Microsoft.Graph oder Newtonsoft.Json verwenden - Ich benutze nur Microsoft .Graph und es können Sie nicht mit Microsoft.graph.FileAttachment konvertieren zu Microsoft.graph.IMessageAttachmentsCollectionPage – twc