Я не могу загрузить аттачементы через надстройку Outlook - PullRequest
0 голосов
/ 16 июня 2020
                Microsoft.Office.Interop.Outlook.Application app = (Microsoft.Office.Interop.Outlook.Application)OutlookApp.Application;

                AttachmentList = new List<Microsoft.Office.Interop.Outlook.Attachment>();
                TotalAttachmentList = new List<Microsoft.Office.Interop.Outlook.Attachment>();
                object objMailItem = app.ActiveWindow();
                Controler.Utility.SenderEmailId = Sendername;
                object context = control.Context;
                if (context is Outlook._Inspector)
                {

                    Outlook.Inspector insp = context as Outlook.Inspector;
                    object item = insp.CurrentItem;
                    if (item is Outlook._MailItem)
                    {
                        Outlook._MailItem mail = item as Outlook._MailItem;
                        // do something with the email
                        MailSubject = mail.Subject;

                        Body = mail.Body;
                        for (int attchCount = 1; attchCount <= mail.Attachments.Count; attchCount++)
                        {
                            if (mail.Attachments.Count > 0)
                            {
                                for (int i = 1; i <= mail.Attachments.Count; i++)
                                {
                                    AttachmentList.Add(mail.Attachments)
                                }
                            }
                        }

                }
                Marshal.ReleaseComObject(item); item = null;
            }
            Marshal.ReleaseComObject(context); context = null;
            }

1 Ответ

0 голосов
/ 16 июня 2020

В коде вы определяете список вложений следующим образом:

AttachmentList = new List<Microsoft.Office.Interop.Outlook.Attachment>();

Но после того, как вы пытаетесь добавить коллекцию вложений вместо одного вложения:

AttachmentList.Add(mail.Attachments)

Вместо этого вам нужно получить экземпляр класса Attachment и передать / добавить его в список:


            TotalAttachmentList = new List<Microsoft.Office.Interop.Outlook.Attachment>();
            object objMailItem = app.ActiveWindow();
            Controler.Utility.SenderEmailId = Sendername;
            object context = control.Context;
            if (context is Outlook._Inspector)
            {

                Outlook.Inspector insp = context as Outlook.Inspector;
                object item = insp.CurrentItem;
                if (item is Outlook._MailItem)
                {
                    Outlook._MailItem mail = item as Outlook._MailItem;
                    // do something with the email
                    MailSubject = mail.Subject;

                    Body = mail.Body;
                    Outlook.Attachments attachments = mail.Attachments;
                    for (int attchCount = 1; attchCount <= attachments.Count; attchCount++)
                    {
                        if (attachments.Count > 0)
                        {
                            for (int i = 1; i <= attachments.Count; i++)
                            {
                                Outlook.Attachment attachment = attachments[i]; 

                                AttachmentList.Add(attachment)
                            }
                        }
                    }

            }
            Marshal.ReleaseComObject(item); item = null;
        }
        Marshal.ReleaseComObject(context); context = null;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...