我是Notes环境的新手,所以我花了很多时间在这里和其他论坛上阅读,试图学习如何通过Lotus / IBM Notes来发送电子邮件。
似乎有两种主要方法;我正在使用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
答案 0 :(得分:0)
将文档直接写入服务器的mail.box文件通常用作解决方案。请参阅this question的第一个答案,并查看OpenNTF Team Mailbox project的代码以获取更多详细信息。但是,这样做通常不会从邮件中完全删除发件人的信息。 (它可能会因Notes和Domino版本的不同而有所不同,但Notes从未与通过这种方式进行的欺骗尝试完全合作。)
如果要完全隐藏发件人的身份,最有效的方法是使用服务器上运行的代理发送邮件 - 或者在您的情况下,重新发送邮件。代理可以通过通用Notes标识而不是开发人员或服务器的标识进行签名,因此在实际发送给实际收件人时,最终用户不是这个过程。在您的情况下,您可以通过创建一个mail-in数据库并将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清除消息来自From和ReplyTo以及INETFrom(如果它们存在 - 请参阅{ {3}})项目,以及here SendTo和Principal以及INETFrom字段。省略代理的基本框架代码(一些示例setting)并假设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()
答案 1 :(得分:0)
您也可以使用后端类(而不是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描述的方法。