2016-05-19 39 views
0

Notes環境は初めてのため、ここや他のフォーラムを読むのに多くの時間を費やしていますLotus/IBM Notes経由のVBAへの電子メール。ExcelからLotus/IBM Notes電子メールを送信するVBA埋め込みチャートの画像と添付ファイルは、Fromアドレスを指定してください。

2つの主なアプローチがあるようです。電子メールの要件の1つは、Excelワークシートの一部のイメージを埋め込むことと、ファイル自体を添付することなので、私はNotesUIメソッドを使用しています。

この段階では、マクロを実行する人の電子メールアドレスからこの(多くの場合より!)を達成する機能するコードがあります。私はこれについて信用できないと主張することができます - それはウェブからの感謝の念で借りられました。

しかし、チームには共有電子メールアカウントがあり、そこから電子メールを送信します。

私は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

答えて

0

ドキュメントをサーバーのmail.boxファイルに直接書き込むことは、この解決策としてよく使用されます。 this questionへの最初の回答を参照し、詳細についてはOpenNTF Team Mailbox projectのコードを見てください。これを行うと、メッセージから送信者の情報が完全に削除されることはありません。 (NotesとDominoのバージョンによって異なる場合がありますが、Notesはこのようになりすます試みと完全に協調したことはありません)。

送信者の身元を完全に隠したい場合は、サーバー上で動作しているエージェントを使用してメッセージを送信するか、場合によっては再送信します。エージェントは、開発者またはサーバーのIDではなく、一般的なNotes IDで署名することができるため、実際の受信者への実際の送信が行われるまでに、エンドユーザーはプロセスの一部ではありません。あなたのケースでは、メールインデータベースを作成し、VBAコードをCall UIdoc.inserttext(mailTo)からCall UIdoc.inserttext("My mail-in database name goes here")に変更することで達成できますが、mailTo値をどこかに置く必要もあります。そうしないと、エージェントはどこに再送するかを知らないでしょう。

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

あなたのエージェントメール受信データベースにafter new mail arrivesを実行するように設定することができ、そしてそれはその時からと返信先removingでメッセージをクリーンアップすることができます:あなたはこのようなコードの行を追加してはことを行うことができますおよびINETFrom(存在する場合 - hereを参照)項目とsetting SendToとPrincipalフィールドとINETFromフィールドがあります。エージェントのための基本的なフレームワークコード(いくつかの例をhere)を省略し、ドキュメントを使用すると、再送信しているの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","[email protected]@Your Notes Domain Goes Here <[email protected]>") 
Call doc.ReplaceItemValue("INETFrom", "[email protected]") 
Call doc.Send() 
+0

こんにちは。私はまだあなたの解決策を試す機会がありませんでしたが、答える時間をとってくれたことに感謝したいと思います。うまくいけば、私はすぐに試験する時間があります – emjaySX

0

バックエンドクラス(UIではなく)を使用してこれを行うこともできます。私は電子メールを作成するのに役立つクラスを作成しました。投稿者のアドレスを好きなものに変更することが含まれます: http://blog.texasswede.com/lotusscript-mail-notification-class/

テキストを挿入する方法を追加するだけで、トーマス・ハンペル(http://blog.tomcat2000.com/blog/tomcat2000.nsf/dx/notesapi-import-pictures-into-richtext-fields-using-backend-classes.htm

+0

こんにちは。今日はあなたの解決策を試す機会がありませんでしたが、私は返信する時間をとってくれて感謝したいと思います。うまくいけば、私はすぐにテストする時間があります – emjaySX

関連する問題