【问题标题】:Eml to pst Redemption C# -> Null Exception RDOMailEml to pst Redemption C# -> Null Exception RDOMail
【发布时间】:2015-05-18 12:10:03
【问题描述】:

我正在尝试创建一个将 eml 文件转换为单个 pst 的程序。 我已经写了那个命令:

RDOSession session = new RDOSession();
RDOPstStore store = session.LogonPstStore(newpstpath);
RDOFolder folder = store.IPMRootFolder.Folders.Item(directoryEmlFile);
RDOMail mail = folder.Items.Add("IPM.Note");

但在命令“RDOMail mail = folder.Items.Add("IPM.Note")”时,系统给了我空异常。谁能帮帮我?

【问题讨论】:

标签: c# nullreferenceexception outlook-redemption eml pst


【解决方案1】:

文件夹变量很可能为 null - 如果文件夹不存在,则按名称检索它(RDOFolder.Folders.Item("foldername")) 将返回 null:

RDOSession session = new RDOSession();
RDOPstStore store = session.LogonPstStore(newpstpath);
RDOFolder folder = store.IPMRootFolder.Folders.Item(directoryEmlFile);
if (folder == null) folder = store.IPMRootFolder.Folders.Add(directoryEmlFile);
RDOMail mail = folder.Items.Add("IPM.Note");

【讨论】:

    【解决方案2】:

    您需要区分 Outlook 和 Redemption 对象。

    看来你需要使用 Session 类的GetRDOObjectFromOutlookObject 方法(赎回)。

     set Session = CreateObject("Redemption.RDOSession")
     Session.MAPIOBJECT = Application.Session.MAPIOBJECT
     set redItem= Session.GetRDOObjectFromOutlookObject(mail)
    

    Items 类的 Add 方法在文件夹的 Items 集合中创建并返回一个新的 Outlook 项目。

    【讨论】:

    • 我在 OP 的代码中看不到任何 Outlook 对象模型对象。
    • 该代码是后来添加的,即发帖人编辑了帖子。仅供参考 Folder 类的 Items 属性存在于 Outlook 对象模型中。
    猜你喜欢
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2018-11-22
    • 1970-01-01
    • 2020-05-03
    相关资源
    最近更新 更多