C# 在用户不知道的情况下使用outlook发送电子邮件

C# 在用户不知道的情况下使用outlook发送电子邮件,c#,email,outlook,C#,Email,Outlook,我正在寻找一种通过outlook.interop以c#格式发送电子邮件的方法,而不需要任何弹出窗口或安全警告。我正在使用此代码获取受信任的应用程序对象 此代码用于发送电子邮件,但由于outlook安全管理器的原因,它仍然会提示用户。有没有解决方法,使用户不会与outlook发生任何中断或交互?有关选项列表,请参阅。 基本上你可以 在具有最新防病毒实用程序的计算机上运行代码。Outlook将不显示安全提示 使用扩展MAPI(仅限C++或Delphi)或扩展MAPI包装器,例如包装扩展MAPI并可从

我正在寻找一种通过outlook.interop以c#格式发送电子邮件的方法,而不需要任何弹出窗口或安全警告。我正在使用此代码获取受信任的应用程序对象

此代码用于发送电子邮件,但由于outlook安全管理器的原因,它仍然会提示用户。有没有解决方法,使用户不会与outlook发生任何中断或交互?

有关选项列表,请参阅。 基本上你可以

  • 在具有最新防病毒实用程序的计算机上运行代码。Outlook将不显示安全提示
  • 使用扩展MAPI(仅限C++或Delphi)或扩展MAPI包装器,例如包装扩展MAPI并可从任何语言访问的扩展MAPI包装器

  • 我猜是微软故意这么做的,所以这是不可能的。?“在用户不知道的情况下用outlook发送电子邮件……但是由于outlook安全管理器的原因,它仍然会提示用户。是否有任何解决方法,以便用户不会与outlook发生任何中断或交互”—听起来很调皮
    private void EmailMessage(string recipient, string subject, string body)
        {
            Microsoft.Office.Interop.Outlook.Application application = GetApplication();
            Microsoft.Office.Interop.Outlook.MailItem email = (Outlook.MailItem)application.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);
    
            try
            {
                email.Subject = subject;
                email.Body = body;
                email.To = recipient;
                ((Outlook._MailItem)email).Send();
                _emailConfirmation = true;
            }
    
            catch (System.Runtime.InteropServices.COMException ex)
            {                
                _emailConfirmation = false;
            }
            catch (Exception ex)
            {             
                _emailConfirmation = false;
            }
            finally
            {
                //release the objects used to send email after message has been sent\\
                if (email != null)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(email);
                if (application != null)
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(application);
            }
        }