通过Intranet上安装的Lotus iNotes发送来自Access的电子邮件

时间:2015-07-21 11:58:19

标签: vba email ms-access access-vba lotus-notes

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

试一试,此代码准备一封电子邮件并通过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成为我们Intranet上的目标:我的登录名是" 39398C@mycompany.com"并且应用程序由" http://mail.mycompany.com/mail/username.nsf ..."

访问

4 个答案:

答案 0 :(得分:2)

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

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

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

  1. 打开Internet Explorer浏览器并登录iNotes(http://mail.mycompany.com/mail/username.nsf)。请注意,此选项目前不适用于Firefox浏览器用户。
  2. 点击右上角的“偏好设置”按钮。
  3. 在iNotes偏好设置的“基本”标签上找到“默认邮件客户端”部分。
  4. 点击“设为默认”按钮。
  5. 使用此方法,您无法直接发送邮件,但需要用户按“发送”。

答案 1 :(得分:2)

我不确定你的意思是“我将Lotus作为嵌入我们内联网系统的电子邮件系统”。

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

但是您无法将程序指向Web服务器上的iNotes实例,它必须位于使用Notes客户端访问的Domino服务器上。

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

以下是我撰写的一些可能对您有帮助的博客文章:

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

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

我似乎记得,如果您添加doc.From = ns.CommonUserName,这将自动选择您的会话!

完整代码:

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