gpt4 book ai didi

c# - 使用 C# 从 Lotus Notes 电子邮件中提取/导出附件

转载 作者:行者123 更新时间:2023-11-30 22:48:50 25 4
gpt4 key购买 nike

我需要将 Lotus Notes 电子邮件附件提取/导出到文件系统中。为此,我编写了以下方法,但每次我在 foreach 行(NotesItem nItem in items)收到错误。任何人都可以告诉我我做错了什么..

谢谢贾瓦林

    public void GetAttachments()
{
NotesSession session = new NotesSession();
//NotesDocument notesDoc = new NotesDocument();
session.Initialize("");

NotesDatabase NotesDb = session.GetDatabase("", "C:\\temps\\lotus\\sss11.nsf", false); //Open Notes Database
NotesView inbox = NotesDb.GetView("By _Author");
NotesDocument docInbox = inbox.GetFirstDocument();
object[] items = (object[])docInbox.Items;
**foreach (NotesItem nItem in items)**
{

//NotesItem nItem = (NotesItem)o1;
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:\\temps\\export\\" + fileName);
}
}
}

最佳答案

您不需要使用 $File 项来获取附件名称。相反,您可以使用 NotesDocument 类的 HasEmbedded 和 EmbeddedObject 属性。

public void GetAttachments()
{
NotesSession session = new NotesSession();
//NotesDocument notesDoc = new NotesDocument();
session.Initialize("");

NotesDatabase NotesDb = session.GetDatabase("", "C:\\temps\\lotus\\sss11.nsf", false); //Open Notes Database
NotesView inbox = NotesDb.GetView("By _Author");
NotesDocument docInbox = inbox.GetFirstDocument();

// Check if any attachments
if (docInbox.hasEmbedded)
{
NotesEmbeddedObject attachfile = (NotesEmbeddedObject)docInbox.embeddedObjects[0];

if (attachfile != null)
{
attachfile.ExtractFile("C:\\temps\\export\\" + attachfile.name);
}
}

关于c# - 使用 C# 从 Lotus Notes 电子邮件中提取/导出附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1446633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com