通过安装在 Intranet 上的 Lotus iNotes 从访问发送电子邮件

Send an email from access via Lotus iNotes installed on intranet

我只需要指出正确的方向,如何 使用 VBA 发送电子邮件。我将 Lotus 作为电子邮件系统嵌入到我们的内部网系统中。

作为尝试,此代码准备了一封电子邮件并通过 Lotus(安装在 pc 上)发送:

Dim ns As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim sender, recipient As String
'sender = Forms![LogIn]![TxtEmail]
If (Not IsNull(DLookup("Email", "Users", "UserName ='" & Me.Affectation.Value & "'"))) Then
    recipient = DLookup("Email", "Users", "UserName ='" & Me.Affectation.Value & "'")
    MsgBox "recipient *" & recipient & "*"
    Else
    MsgBox " recipient null"
End If

If Not (ns Is Nothing) Then

     Call ns.InitializeUsingNotesUserName("CN=MyuserName/O=Cmpany", "password")

    Set db = ns.GetDatabase("ServerName", "mail\MyuserName.nsf", False)
    If (Not (db Is Nothing)) Then
        Set doc = db.CreateDocument()
        doc.Form = "Memo"
        doc.SendTo = recipient
        doc.subject = "Email Subject"
        Dim rt As NotesRichTextItem
        Set rt = doc.CreateRichTextItem("Body")
        rt.AppendText ("Body text")
        doc.Send (False)
        Set rt = Nothing
        Set doc = Nothing
        MsgBox "Message Sent."
    Else
    MsgBox "db Is Nothing"
    End If
    Set db = Nothing
    Set ns = Nothing
Else
    MsgBox "ns  Is Nothing"
End If

我的问题是如何设置此代码以使目标 Lotus 成为我们内部网上的那个:我的登录名是这样的“39398C@mycompany.com”,应用程序由“http://mail.mycompany.com/mail/username.nsf 访问。 .."

不确定,因为我们知道使用 Outlook 时代码很旧,而我已经很长时间没有使用它了,但这可能是一些见解:

我好像记得如果你加上doc.From = ns.CommonUserName,这会自动选择你的session!

完整代码:

Dim session As Object
Dim db As Object
Dim doc As Object
Dim attachme As Object
Dim EmbedObj As Object
Dim attachment() As String
Dim i As Integer

Set session = CreateObject("notes.notessession")
Set db = session.GetDatabase("", "")
Call db.OPENMAIL

Set doc = db.CreateDocument

With doc
    .Form = "Memo"
    .sendto = MailDestinataire
    '.copyto = MailDestinataire2
    .Subject = Sujet
    .Body = CorpsMessage
    .From = session.CommonUserName
    .posteddate = Now
    .SaveMessageOnSend = True
End With

不幸的是,这是不可能的。您所说的 "embedded" Lotus Notes 是一个简单的网站。它被称为 "iNotes" 并且没有在您的客户端上安装任何 dll(除非您为 IE 安装 ActiveX 控件,但这对您的问题没有任何帮助)。

要通过 iNotes 发送电子邮件,您需要一种全新的方法,并且需要您的 Domino 管理员来帮助您:您可以使用网络服务来发送您的邮件(这必须在服务器上启用)或者您可以使用 DIIOP(同样:DIIOP- 任务必须加载到服务器上)。

至少要撰写一封电子邮件,您可以使用 mailto: 协议,但您需要将 iNotes 设置为您的 mailto- 协议处理程序:

  1. 打开 Internet Explorer 浏览器并登录 iNotes (http://mail.mycompany.com/mail/username.nsf)。请注意,目前 Firefox 浏览器用户无法使用此选项。
  2. 单击位于右上角的 "Preferences" 按钮。
  3. 在 iNotes 首选项的 "Basics" 选项卡上找到 "Default Mail Client" 部分。
  4. 单击按钮 "Make Default"。

使用这种方法不能直接发送邮件,需要用户按 "Send"。

我不确定你说的 "I have Lotus as an email system which is embedded into our intranet system" 是什么意思。

您需要在本地安装 Notes 客户端才能在您自己的代码中使用 COM。为您的公司帐户使用 ID 文件(必须位于 Notes 数据目录中的本地文件)并指向您的邮件文件在网络上的服务器。

但是您不能将您的程序指向 Web 服务器上的 iNotes 实例,它必须位于通过 Notes 客户端访问的 Domino 服务器上。

您可以做的是在服务器上创建一个新的 Web 应用程序,您有一个代理可以读取 HTTP POST 数据、创建电子邮件并将其发送出去。 然后,您只需从您的应用程序创建一个 HTTP post。

以下是我写的一些博客条目,可能会对您有所帮助:

http://blog.texasswede.com/free-code-class-to-read-url-name-value-pairs/

http://blog.texasswede.com/parse-url-in-domino-agent/

您可能应该更改代码以通过 SMTP 发送邮件,而不是使用 Notes API 对象。 Microsoft 提供了一种称为 CDO 的对象模型,我认为它会对您有所帮助。有关详细信息,请参阅 answer to theis question。您只需要主机名或 IP 地址信息即可连接到支持入站 SMTP 的基础结构中的 Domino 服务器。