如何从“$ File”项中获取附件值?使用C#(Lotus Notes)

时间:2009-09-16 07:45:59

标签: c# lotus-notes

我正在尝试访问附件名称形式“$ File”(Lotus Notes)。

 NotesView inbox = _serverDatabase.GetView("($Inbox)");
 NotesDocument docInbox = inbox.GetFirstDocument(); 

 NotesItem file = docInbox.GetFirstItem("$File");

 String fileType = file.type.ToString(); 

(为包含附件的邮件获取fileType值“ATTACHMENT”)

我没有得到解决方案:

How to Access attachments from Notes mail?

我得到了解决方案:

object[] items = (object[])docInbox.Items; 

foreach (NotesItem nItem in items)

{

  if (nItem.Name == "$FILE")
   {

     NotesItem file = docInbox.GetFirstItem("$File");   

     string fileName = ((object[])nItem.Values) [0].ToString();

     NotesEmbeddedObject attachfile = (NotesEmbeddedObject)docInbox.GetAttachment(fileName);

     if (attachfile != null)
      {
        attachfile.ExtractFile("C:\\test\\" + fileName);
      }
 } 

但在这里,我只获得第一个附件价值。 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

尝试这样的事情:

    NotesView inbox = _serverDatabase.GetView("($Inbox)"); 
    NotesDocument docInbox = inbox.GetFirstDocument();  
    if(docInbox.HasEmbedded )   {
       foreach (NotesEmbeddedObject o in docInbox.EmbeddedObjects) {
           if ( o.Type == 1454 ) {
            o.ExtractFile( "c:\samples\" & o.Source )    
    }
   }
}

以下是Lotus Notes Designer帮助的链接 - 非常好,因为您可以搜索类等以找出您拥有的选项。

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp?topic=/com.ibm.help.domino.designer85.doc/DOC/H_WHAT_S_NEW_IN_RNEXT_CHAP.html

显示各种类的所有方法和属性。


嗨Preeti,

从其他代码示例中确定您要返回一个数组:

string fileName = ((object[])nItem.Values) [0].ToString();

然而,您只需选择第一个值,您需要通过该集合进行递归。

尝试这样的事情。

foreach (object attachment in (object[])nItem.Values)
        {
            NotesEmbeddedObject attachfile = (NotesEmbeddedObject)docInbox.GetAttachment(attachment.ToString());

            if (attachfile != null)
            {
                attachfile.ExtractFile("C:\\test\\" + attachment.ToString());
            }

        }

约什

答案 1 :(得分:0)

您的上述代码段对我非常有帮助。所以,我尝试了保存所有附件,最后找到了以下解决方案。

            NotesView nInboxDocs = NDb.GetView("$Inbox");
            NDoc=nInboxDocs.GetFirstDocument();
            while (NDoc != null)
            {
                if (NDoc.HasEmbedded && NDoc.HasItem("$File"))
                {
                    // To save only first attachment //
                    //pAttachment = ((object[])NDoc.GetItemValue("$File"))[0].ToString();
                    //pAttachment = CurItem.ToString();
                    //NDoc.GetAttachment(pAttachment).ExtractFile(@"C:\Documents and Settings\Administrator\Desktop\" + pAttachment);

                    // To save all attachment //
                    object[] AllDocItems = (object[])NDoc.Items;
                    foreach (object CurItem in AllDocItems)
                    {
                        NotesItem nItem = (NotesItem)CurItem;
                        if (IT_TYPE.ATTACHMENT == nItem.type)
                        {
                            pAttachment = ((object[])nItem.Values)[0].ToString();
                            NDoc.GetAttachment(pAttachment).ExtractFile(@"C:\Documents and Settings\Administrator\Desktop\" + pAttachment);
                        }
                    }
                }
                NDoc = nInboxDocs.GetNextDocument(NDoc);
            }