在Client Notes编程中有一个操作按钮:
@MailSend(Destinatari;"";"";"Subject";"";"";IncludeDoclink])&
@Command([FileSave])&@Command([FileCloseWindow])
我想在我的xpage应用程序中进行类似的操作,该操作适用于XPiNC和Web。
我的sendto
字段是DjTextarea
,可以有多个值。
我尝试从xpage:simple action
为我的按钮创建Action: Send Mail
。通过这种方式,我可以嵌入<来自Lotus Notes的IncludeDoclink
>在邮件的正文?或者我需要为此操作编写一个javascript?
谢谢你的时间!
更新:关注@Lothar建议,我的Save & Send
按钮具有以下代码行:
if(frmDoc.isNewNote()){
frmDoc.save();
}
var thisdoc = frmDoc.getDocument();
var tempdoc = database.createDocument();
tempdoc.replaceItemValue("Form", "Memo");
tempdoc.replaceItemValue("SendTo", thisdoc.getItemValue("txt_names"));
tempdoc.replaceItemValue("Subject", "subject");
var tempbody:NotesRichtextItem = tempdoc.createRichTextItem("Body");
tempbody.appendText("This is my Mail, click on the doc link below to open the original doc:")
tempbody.addNewLine(2);
tempbody.appendDocLink(thisdoc);
tempdoc.send();
thisdoc.recycle();
tempbody.recycle();
tempdoc.recycle();
frmDoc
是我的doc数据源。我在NotesRichTextItem.appendDocLink(lotus.domino.local.Document) null
行收到了类似appendDoclink
的错误消息。 - 我在@Fredrik有用的建议中也注意到了同样的错误。
答案 0 :(得分:4)
我使用HTML电子邮件功能,可以在xpnippets中找到xpnippets中的电子邮件。
XSnippet SSJS HTML Mime emails
或
它们都不是附加文档链接的功能,但您可以手动将文档添加到文档中。
另一种方法是通过创建文档来手动创建电子邮件 添加一个名为body和subject的richtextfield以及一个sendto字段。 并在Body字段中添加doclink。
var doc:NotesDocument = database.createDocument();
var My_DocLink_Doc:NotesDocument=database.getDocumentByUNID("UNID_of_Document")
doc.replaceItemValue("form", "Memo");
doc.replaceItemValue("sendTo", "the_emailadress");
doc.replaceItemValue("subject", "an email to you");
var RT:NotesRichTextItem=doc.createRichTextItem("Body")
RT.appendText("This is my Text")
RT.addNewLine()
RT.appendDocLink(My_DocLink_Doc)
doc.send();
答案 1 :(得分:1)
弗雷德里克的回答真的没什么可说的,但我担心你可能会看到他的解决方案的错误部分。我自己测试了它,它工作正常,所以这是结果,一步一步:
我的xpage使用名为 mailDoc 的文档数据源绑定到名为 testMail 的Notes表单。它是这样构建的:
控件#1是一个textarea,多个分隔符设置为逗号,因此我可以输入多个以逗号分隔的邮件地址。 textarea绑定到名为 SendTo :
<xp:inputTextarea
value="#{mailDoc.SendTo}"
id="sendTo1"
multipleSeparator=",">
</xp:inputTextarea>
Control#2是一个简单的EditBox控件,绑定到名为 Subject 的Notes字段:
<xp:inputText
value="#{mailDoc.Subject}"
id="subject1">
</xp:inputText>
标有保存和按钮的按钮控件发送首先保存当前文档(如果它是新建)(即之前从未保存过),然后执行所有必要步骤以发送当前打开的文档的文档链接(按钮的onclick事件);在下面的代码中我使用了这些变量:
mailDoc =我的数据源对象;
thisdoc =数据源绑定的后端doc对象;
tempdoc =曾经通过Notes邮件发送的临时后端doc对象:
if(mailDoc.isNewNote()){
mailDoc.save();
}
var thisdoc = mailDoc.getDocument();
var tempdoc = database.createDocument();
tempdoc.replaceItemValue("Form", "Memo");
tempdoc.replaceItemValue("SendTo", thisdoc.getItemValue("SendTo"));
tempdoc.replaceItemValue("Subject", thisdoc.getItemValue("Subject"));
var tempbody:NotesRichtextItem = tempdoc.createRichTextItem("Body");
tempbody.appendText("This is my Mail, click on the doc link below to open the original doc:")
tempbody.addNewLine(2);
tempbody.appendDocLink(thisdoc);
tempdoc.send();
thisdoc.recycle();
tempbody.recycle();
tempdoc.recycle();
结果:按钮代码将包含Notes文档链接的邮件发送给我之前在SendTo字段中输入的所有收件人。
如果我将testMail表单的属性设置为使用Notes中的Xpage(默认值&gt;&gt;打开&gt;&gt;显示Xpage而不是&gt;&gt;&gt; mailSendTest ),那么这也适用于XPinc版本。如果收件人然后单击文档链接,则原始文档当然也会以XPinc模式打开。
<强>注:强>
我需要至少保存一次原始文档,否则附加的文档链接可能无法用于收件人;这可能是弗雷德里克的回答不适合你的原因吗?
希望这会有所帮助。如果这对您有用,请接受Fredrik的回答。
<强>更新强>
在我的代码示例中更改了一些变量名称以澄清事情
答案 2 :(得分:0)
我只是使用这两行:
var url = @Left(。facesContext.getExternalContext()Request()方法getRequestURL(), “newDocument.xsp”)+ “newDocument.xsp documentId =?” + document1.getDocument()getUniversalID()+。 “&安培;行动=使用openDocument” ; rtitem.appendText(URL);
其中newDocument.xsp是文档的xsp格式,rtitem是邮件的富文本字段。这将为您的文档添加整个链接。