Interop.Outlook在发送电子邮件时缺乏权限

时间:2015-05-04 21:14:58

标签: c# asp.net email outlook office-interop

我在Windows 7上运行IIS 7的C#中有一个asp.net应用程序。

当某个事件发生时,由客户端用户驱动发送电子邮件。

代码如下:我使用Outlook Interop而不是Exchange SMTP服务器,因为McAfee阻止了smtpClient,我不允许更改McAfee设置。

我们拥有Office的企业许可证,包括Outlook,因此许可不是问题。

尝试发送电子邮件时,会抛出以下错误:

  

System.Runtime.InteropServices.COMException(0x80030005):你没有   有适当的权限来执行此操作。在   Microsoft.Office.Interop.Outlook.ApplicationClass.CreateItem(OlItemType   ItemType)at< .cs文件名>。

IIS应用程序池使用NetworkService作为ProcessModel标识。 我还检查了DCOMCNFG,它将网络服务作为具有适当权限的授权用户。

我该如何解决这个问题?

    using outlook = Microsoft.Office.Interop.Outlook;

    outlook.Application olkApp1 = new outlook.Application();

            outlook.MailItem olkMail1 = (outlook.MailItem)olkApp1.CreateItem(outlook.OlItemType.olMailItem);
            outlook.Accounts accounts = olkApp1.Session.Accounts;
            foreach (outlook.Account account in accounts)
            {
                if (account.SmtpAddress == "")
                {
                    olkMail1.To = toEmail;
                    if (ccEmail != null)
                    {
                        olkMail1.CC = ccEmail;
                    }
                    olkMail1.Subject = subjEmail;
                    olkMail1.Body = bodyEmail;
                    //olkMail1.Attachments.Add(filePath, outlook.OlAttachmentType.olByValue, 1, "attachment");
                    olkMail1.Save();
                    olkMail1.SendUsingAccount = account;
                    ((outlook._MailItem)olkMail1).Send();

1 个答案:

答案 0 :(得分:1)

无法从服务(例如IIS)使用Outlook。 Outlook从未被设计为使用服务;它可以并且将显示用户提示,没有用户可以解雇。

您的选择

  1. 扩展MAPI,但只能从C ++或Delphi访问

  2. Exchange Web服务 - 请参阅https://msdn.microsoft.com/en-us/library/office/dd877012(v=exchg.150).aspx

  3. Redemption - 它是一个扩展MAPI包装器,可以从任何语言的服务中使用,包括C#,VB.Net或VB脚本: