2015-05-06 4 views
0

Я использую Outlook.Application и Outlook.MailItem объект для открытия Outlook в моем рабочем приложении C#. Мой внешний вид не отображает вложения, хотя, когда я отправляю почту себе, я получаю почту с вложениями. Но он не отображается перед отправкой почты (когда Outlook открыт). Я использую Outlook 2007. Ниже мой код:Outlook не показывает вложения

Outlook.Application oApp = new Outlook.Application(); 
Outlook.NameSpace oNS = oApp.GetNamespace("mapi"); 
// Log on by using a dialog box to choose the profile. 
oNS.Logon(Missing.Value, Missing.Value, true, true); 


// Create a new mail item. 
     Outlook.MailItem oMsg =   (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem); 
...... 
//Check if we need to add attachments 
if (_files.Count > 0) 
{ 
    foreach (string attachment in _files) 
    { 
      oMsg.Attachments.Add(attachment,Outlook.OlAttachmentType.olByValue,null,null); 
    } 
} 

oMsg.Save(); 
oMsg.Display(false); 
+0

Было бы хорошо отформатировать это более четко. Я сделал бы это сам, но кнопка редактирования неактивна. –

+0

Код теперь отформатирован. Благодарю. – Awadesh

+0

Мне удалось решить проблему выше, заменив строку привязки ниже: oMsg.Attachments.Add (вложение, Outlook.OlAttachmentType.olByValue, Type.Missing, Type.Missing); – Awadesh

ответ

0

Конечно, Type.Missing используется параметр опущен и использовать значение по умолчанию в COM-надстройки.

Также я предлагаю разбить цепочку вызовов и объявить каждое свойство или метод вызова отдельной строкой кода. Это позволит мгновенно выпустить каждый базовый COM-объект.

Используйте System.Runtime.InteropServices.Marshal.ReleaseComObject, чтобы освободить объект Outlook, когда вы его закончили. Это особенно важно, если ваша надстройка пытается перечислить более 256 элементов Outlook в коллекции, хранящейся на сервере Microsoft Exchange. Если вы не выпускаете эти объекты своевременно, вы можете достичь предела, налагаемого Биржей, на максимальное количество предметов, открытых в любой момент времени. Затем установите переменную Nothing в Visual Basic (null на C#), чтобы освободить ссылку на объект. Вы можете узнать больше об этом в статье Systematically Releasing Objects в MSDN.

Смежные вопросы