VBA中Notes电子邮件文档中的所有可用字段是什么

时间:2013-06-10 18:14:32

标签: vba access-vba lotus-notes

我已编写VBA代码以从群组邮箱发送电子邮件。我设置主要字段来说明邮件的来源。它几乎正常工作,将消息放入组邮箱的已发送项目中。即使我在Principal字段中有组邮箱名称,它仍然说它是发送给我的。我发现无论哪个用户在发送的项目中查看消息,它都说它是由该用户发送的(它是一个动态字段)。我想设置From字段,我发现我可以用'.from =“(用户名)”'这样做。

所以我知道可用的基本变量,例如.SendTo,.CopyTo,.Principal,.From。但我已经完成了网络搜索,我无法弄清楚如何获得所有可用变量的综合列表。希望有人能指出一些列出这些内容的文档吗?

以下是我的代码:

Function EmailFromNotes(strSendTo As String, strCopy As String, strSubject As String, _
    strText1 As String, strText2 As String, strText3 As String, _
    strText4 As String, strText5 As String, strAttachment As String, strFrom as String)

Dim notesdb As Object
Dim notesdoc As Object
Dim notesrtf As Object
Dim notessession As Object
Dim i As Integer

Dim AttachME As Object 'The attachment richtextfile object
Dim EmbedObj As Object 'The embedded object (Attachment)


    Set notessession = CreateObject("Notes.Notessession")

 ''''''''Group Mailbox'''''''''''''''''''''''''''''''''''''''''''''''''
    Set notesdb = notessession.GetDatabase("Servername", "mailin\GroupMailbox.nsf")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    'Open the mail database in notes
    If notesdb.IsOpen = True Then
    'Already open for mail
    Else
    notesdb.OPENMAIL
    End If

    Set notesdoc = notesdb.CreateDocument
    Call notesdoc.ReplaceItemValue("Subject", strSubject)
    Set notesrtf = notesdoc.CreateRichTextItem("body")
    Call notesrtf.AppendText(strText1 & vbCrLf & strText2 & vbCrLf & strText3 & vbCrLf & strText4 & vbCrLf & strText5)
    '''strCopy = "michael.thain@pnc.com"
    notesdoc.SendTo = strSendTo
    notesdoc.CopyTo = strCopy
    notesdoc.from = strFrom

''''''''Group Mailbox'''''''''''''''''''''''''''''''''''''''''''''''''
    notesdoc.principal = "Group Mailbox Name"
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

If strAttachment = "" Then
Else
    Set AttachME = notesdoc.CreateRichTextItem(strAttachment)
    Set EmbedObj = AttachME.EmbedObject(1454, "", strAttachment)
End If

    Call notesdoc.Save(True, False)
    notesdoc.SaveMessageOnSend = True
    Call notesdoc.Send(False, strSendTo)
    Set notessession = Nothing

End Function

3 个答案:

答案 0 :(得分:3)

与许多其他邮件系统不同,Lotus Notes对欺骗From字段非常挑剔。 NotesDocument.Send()方法不希望您这样做,并会覆盖您放在那里的内容。提供了Principal字段,因此您可以代表您发送的是谁,但From应该是实际发件人的真实姓名。如果您查看Sent文件夹中邮件的文档属性,我相信您会发现From字段确实包含您的名称,而不是您的代码尝试在该字段中放置的名称!

有一种解决方法,至少对于已发送的消息。您可以使用NotesDocument.Save()直接将文档写入组邮箱,而不是依赖于SaveMesasageOnSend属性,确保设置PostedDate而不是DeliveredDate,以使其显示在“已发送”视图中。它会丢失Domino路由器通常会为您添加的其他字段,例如MessageID和其他一些字段 - 但这对您来说可能并不重要。该消息仍应可见。在任何情况下,尽管复杂,但Memo表单中字段中的公式及其在邮件模板中的相关子表单是您查明用户看到的与存储在实际值中的实际值相关的最终指南。文档。

如果你还担心确保收件人看不到你的名字,那还有另一招。它涉及将消息直接写入路由器邮箱(mail.box文件)。我已经看过一些系统,其中有代码可以防止欺骗,即使你这样做,所以你必须尝试看看它是否会起作用。

BTW:您是在询问用户查看“已发送”视图的索引时看到的内容吗?那应该是在Principal字段中显示的值。或者您是否询问用户在发送视图并打开消息时看到了什么?这应显示Principal字段,后跟换行符,然后是“发送者:”From字段。 (请记住,由于我所描述的反欺骗规定,From字段不太可能是您的代码设置的值。)这与您所看到的相匹配吗?

答案 1 :(得分:0)

邮件字段由RFC定义,通常用于所有邮件。 http://en.wikipedia.org/wiki/Email#Message_header RFC 5322 http://tools.ietf.org/html/rfc5322

答案 2 :(得分:0)

在RFC 5322标准中,字段From与Lotus Notes中的目的不同,因为它始终标识mail.box的所有者。而不是使用字段Principal来标识写入电子邮件的mail.box的所有者,字段Sender用于标识生成电子邮件的有效用户。 许多电子邮件提供商都没有(或更好地说不再)在电子邮件标题中接受字段Principal,并且反过来提到不符合RFC 5322标准。在LotusScript直接在mail.box中保存的文档中生成的消息中,您应该使用字段From而不是字段Principal,并为有效发送者的电子邮件地址添加字段Sender(发送者),普通Lotus中的人员电子邮件将在字段中。如果您希望所有对有效发件人的回复而不是字段From(原始LN字段Principal)中标识的人员,则需要添加字段ReplyTo,其字段与der field Sender中的地址相同。