Office 365 send email with attachment using OutlookServicesClient

前端 未结 2 1248
我在风中等你
我在风中等你 2021-01-17 04:36

I\'m trying to send out some e-mails on behalf of users of my LOB application. I\'m using the Office 365 connected service API so that I can authenticate using OAuth. My c

2条回答
  •  迷失自我
    2021-01-17 05:02

    I was able to figure this out and it seems that the only way to send attachments out in an e-mail in the Office 365 API is to first save the e-mail as a draft, add the attachments, and then send it. Here is my revised SendUsingOutlookClient method

        static async void SendUsingOutlookClient(CommunicationRow me, OutlookServicesClient outlook)
        {
            var m = new Message();
            m.From = ToRecipient(me.From);
            m.Body = new ItemBody { Content = me.Body };
            if (me.IsBodyHtml)
                m.Body.ContentType = BodyType.HTML;
            else
                m.Body.ContentType = BodyType.Text;
            m.Subject = me.Subject;
            m.CcRecipients.Add(me.Cc);
            m.BccRecipients.Add(me.Bcc);
            m.ToRecipients.Add(me.To);
            outlook.Me.Messages.AddMessageAsync(m).Wait();
            foreach (var attach in me.Attachments)
            {
                var file = attach.File;
                var fileversion = file.GetVersion(attach.Version);
                string fullpath = LibraryServiceImpl.GetFullNameInArchive(fileversion);
                var mattach = new FileAttachment { Name = file.Name, ContentId = attach.ContentId, ContentLocation = fullpath, ContentType = GraphicUtils.DetermineMime(Path.GetExtension(fullpath)) };
                if (file.Name.MissingText())
                    mattach.Name = attach.ContentId + fileversion.FileExtension;
                m.Attachments.Add(mattach);
                await m.UpdateAsync();
            }
            await m.SendAsync();
        }
    

提交回复
热议问题