@Mailsend在xpages按钮

时间:2014-04-24 07:15:51

标签: xpages lotus-notes

在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有用的建议中也注意到了同样的错误。

3 个答案:

答案 0 :(得分:4)

我使用HTML电子邮件功能,可以在xpnippets中找到xpnippets中的电子邮件。

XSnippet SSJS HTML Mime emails

XSnippet email Bean

它们都不是附加文档链接的功能,但您可以手动将文档添加到文档中。

另一种方法是通过创建文档来手动创建电子邮件 添加一个名为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

的Notes字段
<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是邮件的富文本字段。这将为您的文档添加整个链接。