首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过.Net应用程序发送电子邮件后,Outlook RPC服务器不可用

通过.Net应用程序发送电子邮件后,Outlook RPC服务器不可用
EN

Stack Overflow用户
提问于 2015-01-16 16:48:30
回答 1查看 233关注 0票数 0

我刚刚开始研究.Net和办公应用程序之间的互操作性,尤其是Outlook。我设法通过Outlook发送电子邮件,但由于某种原因,outlook的RPC服务器在我发送电子邮件后关闭(如果outlook尚未运行)。下面是我的代码:

代码语言:javascript
运行
复制
private void CreateEmailItem(string subjectEmail, string toEmail, string bodyEmail)
{
    Outlook.Application oApp = new Outlook.Application();
    Outlook.MailItem oMsg =  (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
    try
    {
        Outlook.Inspector oInspector = oMsg.GetInspector;
        oMsg.Subject = subjectEmail;
        Outlook.Recipients oRecips =  (Outlook.Recipients)oMsg.Recipients;
        Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(toEmail);
        oRecip.Resolve();
        oMsg.HTMLBody = "<html><div style=font-size:16px; font-face:consolas;>" + bodyEmail + "</font></body></div></html>";
        oMsg.Send();
    }
    catch (Exception e)
    { }
    finally
    {
        //cleanup
        Marshal.FinalReleaseComObject(oMsg);
        oApp.Quit();
        GC.Collect();
        GC.WaitForPendingFinalizers();
        GC.Collect();
        GC.WaitForPendingFinalizers();
    }
}

因此,当我尝试调用outlook应用程序Quit()方法时会抛出错误?

EN

回答 1

Stack Overflow用户

发布于 2015-01-16 18:32:58

尝试删除Marshal.FinalReleaseComObject(oMsg);代码行。如果使用GC.Collect方法,则无需释放基础COM对象。

另外,我建议在全局作用域中声明一个Application对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27980149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档