Код ниже работает в моем настольном приложении, если:
- Outlook не работает
- Outlook работает с правами администратора
Когда Outlook работает нормально, код выдает ошибку.
Ссылка на объект не найдена
Другая проблема заключается в том, что я не могу попросить пользователей продолжать использовать Outlook в правах администратора, поскольку мгновенный поиск перестает работать.
Мое приложение работает с правами администратора, которые являются обязательными для моего приложения.
Платформа:
Microsoft.NET Framework 4.6.2
Outlook 2016
Windows 10
public static void CreateOutlookEmail(string email, string subject, string body, string cc, string fileName)
{
try
{
Microsoft.Office.Interop.Outlook.Application app;
try
{
app = (Microsoft.Office.Interop.Outlook.Application)Marshal.GetActiveObject("Outlook.Application");
}
catch
{
app = new Microsoft.Office.Interop.Outlook.Application();
}
if (app == null)
{
return;
}
Microsoft.Office.Interop.Outlook.MailItem mailItem = app.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as
Microsoft.Office.Interop.Outlook.MailItem;
mailItem.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML;
mailItem.Importance = Microsoft.Office.Interop.Outlook.OlImportance.olImportanceHigh;
mailItem.Subject = subject;
mailItem.To = email;
mailItem.HTMLBody = body;
mailItem.CC = cc;
var fileInfo = new FileInfo(fileName);
mailItem.Attachments.Add(fileName, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, 1,
fileInfo.Name);
//mailItem.Display();
((Microsoft.Office.Interop.Outlook._MailItem)mailItem).Send();
}
catch (Exception eX)
{
XtraMessageBox.Show(eX.Message + "\n" + eX.StackTrace + "\n" + eX.Source + "\n" + eX.InnerException);
}
}