iT邦幫忙

DAY 18
5

鐵之 Just Do Lotus Notes系列 第 18

用C#取得Notes系統檔案附件(CSharp Get Notes Attachments)

今天圍繞的主題還是.NET跟Domino做整合的議題,在Domino上附件等資料都是放在資料庫裡面的要做資料移轉等相關功能時我們就會需要一支特別的程式來處理這段問題,如果沒寫過類似的程式的話應該還蠻傷腦筋的,今天我們就來讓大家不再為此煩惱囉.

10/06 簽核記錄維護介面(MaintainSignLog)
10/07 群組維護與佈署(Maintain Group & Group Deploy)
10/08 測試郵件範本內容寄送功能-01(MailTemplate)
10/09 用.NET建立COM+元件與Notes做整合
10/10 Lotus Notes Integration with Microsoft _NET Platform (C#)
全部精采文章
我們透過外部程式來實驗是否可以取得Notes MailBox裡面的附件資料,如果可以的話要做資料的移轉就很簡單囉.
Step01:由以下製作好的介面來取的 hub/wwcorp Server下的 mail\\dnotes.nsf 路徑檔案.

Step02:範例只取得MailBox裡的第一份文件.

Step03:執行程式後在 C:\TEMP 可以看的到輸出的附加檔案. 成功囉!

讓我們看一下程式碼,是不是很簡單的幾行久可以達到這個令人苦惱的問題呢?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;  //  Debug
using Domino;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            GetAttachments();
        }
        // 取得第一份 Mail Box 文件的 所有附加檔案
        public void GetAttachments()
        {
            NotesSession session = new NotesSession();
            session.Initialize("");
            NotesDatabase NotesDb = session.GetDatabase("hub/wwcorp", "mail\\dnotes.nsf", false);
            NotesView inbox = NotesDb.GetView("($Inbox)");
            NotesDocument docInbox = inbox.GetFirstDocument();

            // Check if any attachments
            if (docInbox.HasEmbedded)
            {
                object[] items = (object[])docInbox.Items;
                foreach (NotesItem item in items)
                {
                    if (item.Name.Equals("$FILE"))
                    {
                        object[] values = (object[])item.Values;
                        docInbox.GetAttachment(values[0].ToString()).ExtractFile("C:\\TEMP\\" + values[0].ToString());  //確認該目錄已建立
                        Debug.WriteLine(values[0].ToString());
                    }

                }

            }
        }
    }
}

如果要相關資料庫程式的話在跟我聯絡囉.


上一篇
Lotus Notes Integration with Microsoft _NET Platform (C#)
下一篇
使用CSharp透過Domino Server寄送Mail
系列文
鐵之 Just Do Lotus Notes41

尚未有邦友留言

立即登入留言