我试图编写一个Excel代码,它允许我自动创建和发送Lotus电子邮件。我面临的问题是很难创建一封富文本电子邮件,因此我认为打开电子邮件草稿会更容易,使用标记文本将被替换(此处用于粘贴EXCEL单元格),然后只需:
.GotoField ("Body")
.FINDSTRING "PASTE EXCEL CELLS HERE"'
并替换。
对于如何打开电子邮件草稿有任何帮助吗?作为.CreateDocument
属性的东西?
非常感谢!
发布于 2013-11-04 08:41:34
其他人提出了有趣的概念,但最健壮的方法是在映射到Body Rich项的MIME环境中使用HTML。使用NotesSession..Convertmime = False
,您可以将主体构建为HTML,然后发送消息。基于Joseph 这里的帖子,LotusScript等效如下:
Sub Initialize()
Dim s As New NotesSession
Dim db As NotesDatabase
Dim stime as Single
Dim alog As New NotesLog("debug")
Call alog.OpenAgentLog()
stime = Timer
On Error GoTo eh
Dim doc As NotesDocument
Dim body As NotesMIMEEntity
Dim header As NotesMIMEHeader
Dim stream As NotesStream
Dim child As NotesMIMEEntity
Dim sendTo As String
Dim subject As String
s.Convertmime = False
sendto = s.Effectiveusername
subject = "Demo Message"
Set db= s.Currentdatabase
Set doc=db.Createdocument()
Set stream = s.CreateStream
Set body = doc.CreateMIMEEntity
Set header = body.CreateHeader({MIME-Version})
Call header.SetHeaderVal("1.0")
Set header = body.CreateHeader("Content-Type")
Call header.SetHeaderValAndParams({multipart/alternative;boundary="=NextPart_="})
'Add the to field
Set header = body.CreateHeader("To")
Call header.SetHeaderVal(SendTo)
'Add Subject Line
Set header = body.CreateHeader("Subject")
Call header.SetHeaderVal(subject)
'Add the body of the message
Set child = body.CreateChildEntity
Call stream.WriteText("<h1>Demo HTML Message</h1>")
Call stream.WriteText(|<table colspacing="0" colpadding="0" border="none">|)
Call stream.WriteText(|<tr><td>cell 1.1</td><td>cell 1.2</td><td>cell 1.3</td></tr>|)
Call stream.WriteText(|<tr><td>cell 2.1</td><td>cell 2.2</td><td>cell 2.3</td></tr>|)
Call stream.WriteText(|<tr><td>cell 3.1</td><td>cell 3.2</td><td>cell 3.3</td></tr>|)
Call stream.WriteText(|</table>|)
Call stream.WriteText(|<div class="headerlogo">|)
Call stream.WriteText(|<!-- ...some more HTML -->|)
Call child.setContentFromText(stream, {text/html;charset="iso-8859-1"}, ENC_NONE)
Call stream.Truncate 'Not sure if I need this
Call stream.Close
Call doc.CloseMIMEEntities(True)
Call doc.replaceItemValue("Form", "Memo")
Call doc.Send(False, sendTo)
es:
Exit Sub
eh:
Dim emsg$
emsg = Error & " at " & Erl & " in " & s.Currentagent.name
Call alog.logError(Err, emsg)
MsgBox "ERROR: " & Err & ": " & emsg
Resume es
End Sub
所有这些都应该很容易地在Excel中转换为VBA。当然,你可以用你的HTML做你想要的复杂的事情。
发布于 2013-11-03 15:05:14
“草案”一词在这里可能是不恰当的,但“模板”一词也是如此。在Lotus中,两者都有特定的含义,这并不是您真正想要的。用户可以删除草稿,而模板则完全不同。所以我们把它叫做样板信息。
我会在Domino服务器上创建一个特殊的邮件数据库(NSF文件),它只是作为样板的存储库。您可以在该邮件数据库中创建一个名为“样板”的文件夹。使用Designer,您可以修改该文件夹的设计,使Subject列成为视图中的第一列,并对其进行排序。
一旦完成了这些操作,并创建了一些样板并将它们保存在文件夹中,就可以使用VBA执行NotesSession.getDatabase调用、NotesDatabase.getView调用(这用于文件夹和视图),然后使用NotesView.getDocumentByKey()检索指定给它的主题的特定样板。请注意,您不必将此文档复制到用户的邮件数据库中才能将其发送。
发布于 2013-11-03 21:03:31
你想做的不是小事,但你提到了一封电子邮件草稿,所以可能会有一个解决办法。
在邮件设置中,可以指定签名文件,该签名文件可以是磁盘上的外部html文件。因此,修改签名文件,然后创建您的新邮件,然后以您想要的方式填充body字段。
对于示例代码,在备忘录表单中应该有一个按钮来指定要使用的签名文件。你可以用它作为基线。
https://stackoverflow.com/questions/19750961
复制相似问题