【问题标题】:Get MailItem after Items.ItemAdd event在 Items.ItemAdd 事件之后获取 MailItem
【发布时间】:2014-01-25 04:52:15
【问题描述】:

我正在尝试获取电子邮件在发送到已发送邮件文件夹后的大小和对话索引。

STDMETHODIMP CItemsEventListener::HandleItemAdd(DISPPARAMS* pDispParams, CString p_csDate, CString p_csTime)
{
    HRESULT l_hResult;
    CMailItem l_mailItem = NULL ;
    IDispatch * m_disp = pDispParams->rgvarg[1].pdispVal;
    l_hResult = m_disp->QueryInterface(IID_MailItemItems, (void**)&l_mailItem);
    //Do stuff
}

QueryInterface 方法生成异常。 (访问冲突)。 Ps:我使用与应用程序事件相同的 CMailItem 类,它运行良好。 我做错了什么?

任何帮助将不胜感激。

【问题讨论】:

    标签: c++ events outlook mailitem


    【解决方案1】:

    首先,该方法是如何调用的?

    其次,您正在访问第二个参数 (rgvarg[1].pdispVal)。您需要使用第一个参数 (rgvarg[0].pdispVal)。

    【讨论】:

    • 更改参数号解决了他的问题,谢谢。
    • re @dmitry,我注意到在 Outlook 2010 中,未触发 itemadd 事件(在默认的已发送邮件框中)。我认为这是因为 Outlook 2010 根据它们所属的帐户将发件箱分开。我的新问题是,无论它属于哪个帐户,如何捕获 ItemAdd 事件(在发送电子邮件后,我的意思是当它被添加到已发送邮件框时)?
    • 当然,如果一个项目进入不同商店的“已发送项目”文件夹,您需要连接该特定商店的事件。如果您转到“已发送邮件”文件夹,单击“文件夹”按钮,您是否看到 OutlookSpy 中的事件。选择项目,单击浏览,转到事件选项卡?
    猜你喜欢
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 1970-01-01
    • 2014-11-05
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多