0

グループ メールボックスからメールを送信するための VBA コードを作成しました。メールの送信元を示すプリンシパル フィールドを設定しました。グループメールボックスの送信済みアイテムにメッセージを入れて、ほぼ正しく動作します。プリンシパル フィールドにグループ メールボックス名がありますが、自分宛てに送信されたと表示されます。どのユーザーが送信済みアイテムのメッセージを見ても、そのユーザーによって送信されたと表示されることがわかりました (これは動的フィールドです)。その From フィールドを設定したいのですが、「.from = "(User Name)"」のようなものでそれができることを発見しました。

したがって、.SendTo、.CopyTo、.Principal、.From など、利用可能な基本的な変数を認識しています。しかし、私は Web 検索を行いましたが、利用可能なすべての変数の包括的なリストを取得する方法がわかりません。うまくいけば、誰かがこれらをリストしたドキュメントを教えてくれますか?

参考までに、私のコードは次のとおりです。

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
4

3 に答える 3

3

他の多くのメール システムとは異なり、Lotus Notes は From フィールドのスプーフィングに細心の注意を払っています。NotesDocument.Send()メソッドはあなたにそれをさせたくないので、あなたがそこに置いたものを上書きします。Principal フィールドは、誰に代わって送信しているかを言うことができるように提供されていますが、From は実際の送信者の本当の名前であるはずです。送信済みフォルダー内のメッセージのドキュメント プロパティを確認すると、コードがそのフィールドに入力しようとしている名前ではなく、From フィールドに実際に自分の名前が含まれていることがわかると思います。

少なくとも送信済みメッセージについては、これを回避する方法があります。SaveMesasageOnSend プロパティに依存する代わりにNotesDocument.Save()、ドキュメントをグループ メールボックスに直接書き込むために使用できます。その際、送信済みビューに表示されるように、DeliveredDate ではなく PostedDate を設定してください。ただし、MessageID やその他のいくつかのフィールドなど、Domino ルーターが通常追加する他のフィールドは欠落していますが、それは重要ではないかもしれません。メッセージは引き続き表示されます。いずれにせよ、複雑ではありますが、メール テンプレートのメモ フォームとそれに関連付けられたサブフォームのフィールドの数式は、ユーザーに表示される内容が、メール テンプレートに格納されている実際の値とどのように関連しているかを理解するための究極のガイドです。資料。

受信者に自分の名前が表示されないようにすることも心配している場合は、別のトリックがあります。メッセージをルーターのメールボックス (mail.box ファイル) に直接書き込む必要があります。ただし、これを行ってもなりすましを防止するコードが配置されているシステムをいくつか見たことがあります。したがって、それが機能するかどうかを試して確認する必要があります。

ところで: ユーザーが [送信済み] ビューのインデックスを見たときに何が表示されるかについて尋ねていますか? プリンシパル フィールドに値が表示されているはずです。それとも、ユーザーが [送信済み] ビューに移動してメッセージを開いたときに表示される内容について尋ねていますか? これにより、[プリンシパル] フィールドが表示され、その後に改行が続き、次に [送信者:] フィールドが表示されます。(From フィールドは、私が説明したスプーフィング対策のため、コードが設定した値ではない可能性が高いことに注意してください。) これは、表示されているものと一致しますか?

于 2013-06-10T19:19:06.943 に答える
0

RFC 5322 標準では、From フィールドは Lotus Notes とは異なる目的を持っています。これは、常に mail.box の所有者を識別するためです。フィールド Principal を使用して電子メールが書き込まれた mail.box の所有者を識別する代わりに、フィールド Sender を使用して、電子メールを作成した有効なユーザーを識別します。フィールド プリンシパルは、多くの電子メール プロバイダーによって電子メール ヘッダーで受け入れられていません (または、もはや受け入れられていないと言ったほうがよいでしょう)。mail.box に保存された文書内で LotusScript によって直接生成されるメッセージでは、フィールド Principal の代わりにフィールド From を使用し、有効な送信者 (送信者) の電子メール アドレスのフィールド Sender を追加する必要があります。電子メールは [差出人] フィールドに表示されます。

于 2016-04-14T06:30:03.250 に答える