簡體   English   中英

從Excel VBA發送Lotus / IBM Notes電子郵件-嵌入式圖表圖像和附件,指定發件人地址

[英]Sending Lotus/IBM Notes email from Excel VBA - embedded chart image and attachment, specify From address

我是Notes環境的新手,因此,我花了很多時間閱讀此處和其他論壇,以嘗試學習如何通過Lotus / IBM Notes VBA電子郵件。

似乎有兩種主要方法; 我使用NotesUI方法,因為對電子郵件的要求之一是嵌入一部分Excel工作表的圖像,以及附加文件本身。

在此階段,我有運行正常的代碼,該代碼可以從運行宏的人員的電子郵件地址中實現此目標(通常不是!)。 我對此不負任何責任-它是從網絡上感激地借來的。

但是,團隊有一個共享的電子郵件帳戶,我希望從該帳戶發送電子郵件。

我已經看到了一些有關Principal討論,並且能夠指定FromName ,但是到目前為止,我還無法實現最后一部分。

下面是我用來成功發送帶有附件的電子郵件的代碼,以及工作表中某個部分的圖片,下面將非常歡迎您提示如何修改現有代碼以從另一個電子郵件地址發送的技巧!

    Sub SendEmbedMail(mailTo As String, stSubject As String, _
        copyData As Range, Optional msgBeforeEmbed As String, _
        Optional msgAfterEmbed As String, Optional attachFile As Workbook)

    Dim Notes As Object, db As Object, WorkSpace As Object
    Dim UIdoc As Object, UserName As String, MailDbName As String
    Dim AttachMe As Object, EmbedObj As Object

    'Create & Open New Document
    Set WorkSpace = CreateObject("Notes.NotesUIWorkspace")
    Call WorkSpace.COMPOSEDOCUMENT(, , "Memo")
    Set UIdoc = WorkSpace.CURRENTDOCUMENT
    Call UIdoc.inserttext(mailTo)
    Call UIdoc.gotofield("Body")
    Call UIdoc.inserttext(msgBeforeEmbed)
    copyData.CopyPicture
    Call UIdoc.Paste
    Call UIdoc.inserttext(msgAfterEmbed)
    Call UIdoc.gotofield("Subject")
    Call UIdoc.inserttext(stSubject)
    If Not attachFile Is Nothing Then
        Set AttachMe = UIdoc.Document.CreateRichTextItem("Attachment")
        Set EmbedObj = AttachMe.EmbedObject(1454, vbNullString, _ 
                  attachFile.FullName, "Attachment")
    End If
    Call UIdoc.Send(0, mailTo)

    End Sub

直接將文檔直接寫入服務器的mail.box文件通常用作解決方案。 請參閱此問題的第一個答案,並查看OpenNTF Team Mailbox項目的代碼以獲取更多詳細信息。 但是,這樣做通常不會完全從郵件中刪除發件人的信息。 (根據Notes和Domino版本的不同,它可能會有所不同,但是Notes從未與這種方式的欺騙嘗試完全配合。)

如果您想完全隱藏發件人的身份,最有效的方法是使用服務器上運行的代理來發送消息-或者在您的情況下,重新發送該消息。 可以使用通用的Notes ID代替開發人員或服務器的ID來對代理進行簽名,因此,當實際發送到實際接收者時,最終用戶就不再是該過程的一部分。 在您的情況下,您可以通過創建一個郵寄數據庫並將VBA代碼從Call UIdoc.inserttext(mailTo)更改為Call UIdoc.inserttext("My mail-in database name goes here")但是您還將必須將您的mailTo價值放在某處,否則代理將不知道將其重新發送到哪里。 您可以通過添加如下代碼行來做到這一點:

Call UIdoc.Document.ReplaceItemValue("actualRecipient",mailTo)

可以將您的代理設置為在新郵件到達郵件數據庫后運行,然后可以通過刪除 From和ReplyTo和INETFrom(如果存在-參見此處 )項並設置 SendTo和Principal和INETFrom字段。 省略代理的基本框架代碼( 此處為一些示例),並假設doc是包含要重新發送的NotesDocument的變量,則代理的實際工作部分可能與此類似:

doc.RemoveItem("From")
doc.RemoveItem("InetFROM")
doc.RemoveItem("ReplyTo")
if doc.hasItem("actualRecipient") then
  doc.ReplaceItemValue("SendTo",doc.actualRecipient(0))
  doc.RemoveItem("actualRecipient")
else
' here you'll want to do something sensible if a message arrives in the mail-in
' database but it doesn't have an actualRecipient; i.e., it wasn't sent by your
' VBA code!
End if
Call doc.ReplaceItemValue("Principal","support@company.com@Your Notes Domain Goes Here <support@company.com>")
Call doc.ReplaceItemValue("INETFrom", "support@company.com")
Call doc.Send()

您也可以使用后端類(而不是UI)來執行此操作。 我寫了一個類來幫助創建電子郵件,它包括將發件人地址更改為您喜歡的任何內容: http : //blog.texasswede.com/lotusscript-mail-notification-class/

您只需要添加一種在文本中插入圖片的方法,就可以使用Thomas Hampel在http://blog.tomcat2000.com/blog/tomcat2000.nsf/dx/notesapi-import-pictures-into中描述的方法-richtext-fields-using-backend-classes.htm

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM