我在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();
答案 0 :(得分:1)
无法从服务(例如IIS)使用Outlook。 Outlook从未被设计为使用服务;它可以并且将显示用户提示,没有用户可以解雇。
您的选择
扩展MAPI,但只能从C ++或Delphi访问
Exchange Web服务 - 请参阅https://msdn.microsoft.com/en-us/library/office/dd877012(v=exchg.150).aspx
Redemption - 它是一个扩展MAPI包装器,可以从任何语言的服务中使用,包括C#,VB.Net或VB脚本: