使用asp.net c#从莲花笔记发送带附件的电子邮件#

时间:2017-04-20 06:49:14

标签: c# asp.net email lotus-notes lotus-domino

我想发送带有莲花笔记附件的电子邮件。

我尝试了以下代码,显示错误:

错误:

An exception of type 'System.Runtime.InteropServices.COMException' occurred in App_Web_sendemail.aspx.cdcab7d2.s2ysjl2c.dll but was not handled in user code

Additional information: Database open failed (xx.xxx.xxx.xxx!!names.nsf)

代码:

Domino.NotesSession nSession = new Domino.NotesSession();
        nSession.Initialize("bbau0862"); //Password

        Domino.NotesDatabase nDatabase =
  nSession.GetDatabase("xx.xxx.xxx.xxx", "names.nsf");

        //If the database is not already open then open it. 
        if (!nDatabase.IsOpen)
        {
            nDatabase.Open();
        }

        Domino.NotesDocument nDocument = nDatabase.CreateDocument();
        /*create string variable that will be passed to function. This way we setup To field value*/
        string[] recipients =
          {"abc@gmail.com", "xyz@gmail.com"};

        //setup Form
        nDocument.ReplaceItemValue("Form", "Memo");
        nDocument.ReplaceItemValue("SentTo", recipients); //To field
        nDocument.ReplaceItemValue("Subject", "Message subject"); //message subject
        nDocument.ReplaceItemValue("Body", "Something in the message body"); //set body text
        nDocument.SaveMessageOnSend = true; //save message after it's sent
        nDocument.Send(false, recipients); //send

请告诉我如何在asp.net中发送附有附件的莲花笔记电子邮件。

谢谢。

2 个答案:

答案 0 :(得分:2)

您的代码无法打开数据库'names.nsf'。在询问如何发送带附件的电子邮件之前,您需要弄清楚代码无法打开数据库的原因。

对此的一些可能解释是:您无法连接到服务器,您无权访问服务器,或者您无权访问数据库。你需要检查所有这些事情。

在运行代码的计算机上安装了哪些IBM Lotus代码?是安装了Notes客户端代码还是安装了Domino服务器代码?必须是其中一个,如果它是服务器代码,它必须是32位版本,因为IBM不支持Domino的64位COM类。

您需要检查代码是否可以连接到服务器'xx.xxx.xxx.xxx'。客户端和服务器都具有可用于检查的功能。请参阅help for client trace)或help for server trace

您还需要检查当前用户ID(与您传入Initialize()方法的密码“bbau0862”对应的用户ID,以及必须是当前ID的用户ID)是否指向 - 客户端或Domino服务器安装的notes.ini文件中的keyfilename或serverkeyfilename条目可以访问服务器'xx.xxx.xxx.xxx'和数据库'names.nsf'。(如果有的话)访问服务器,它应该可以访问names.nsf,但是如果它是某种特殊的id,是专门为你的应用程序提供的,你真的应该检查!这两个都很容易检查使用Notes客户端和该ID。

答案 1 :(得分:-1)

碰巧我用Domino使用c#或powershell得到了这个错误。 我想你尝试在64位应用程序中使用32位多米诺COM组合(64位对于domino客户端不存在)。 这意味着当它在64位PowerShell控制台中抛出此错误时,domino composant将在* 86 powershell控制台中运行。

解决方案我担心是为* 86重新编译项目!

点击此处了解更多详情: Is a COMException of 0x80040154 always 'Class not registered'?

所以我指出你使用多米诺骨牌的经验COM很烦人你最好让你的多米诺骨牌团队提供用户信息的网络服务。

使用domino for exemple force一切都以x86运行。 在客户端应用程序中,COM会在任何c#unintented错误崩溃的同时崩溃,同时Lotus注释用户的客户端(BOSS?)。