1

我正在将应用程序迁移到 xpages。我有一个根据应用​​收到的电子邮件创建的文档。创建的文档上的富文本字段包含电子邮件正文。有人通过更新此字段并点击“发送”按钮来响应发件人。在它真正发出之前,我会在发送的内容中添加一些文本。我尝试了很多方法来做到这一点,但我很难过。

我知道 .getItemValue 返回一个向量,但我想我还是会试一试,但返回 null。

var rtiIssueField = maildoc.createRichTextItem("body");
rtiIssueField.appendText("**IMPORTANT:blah  **");
rtiIssueField.appendText("\n<LWST>");
rtiIssueField.appendText("\n"+stEntryDoc.getItemValue("Issue"));
rtiIssueField.appendText("\n</LWST>")

有什么提示吗?谢谢克莱姆

4

4 回答 4

2

非常感谢您的意见。我快到了。只有几件事要清理。但是有了你的提示,我能够做我需要的事情。我只是想我会感谢你并发布我想出的代码以防其他人需要它。

    var stream:NotesStream = session.createStream();
    //Grab the contents of the rt field on the web that has just been edited:
    var issueRT:NotesRichTextItem = getComponent("issue1").getValue();
    //Prefix some additional information for the customer.
    stream.writeText("**IMPORTANT: When responding, please do not include the history.  That is, remove this line and everything below it. **");
    //carriage return:
    stream.writeText("<p>");
    //Prefix a tag that will be used to strip off text if they respond WITH email history.
    stream.writeText("&lt;LWST&gt;");
    //carriage return:
    stream.writeText("<p>");
    //Prefix the 
    //Prefix a view scoped variable that contains things like date, responder, etc.
    stream.writeText(viewScope.ResponseHeader);
    //Add the contents of the rt field.
    stream.writeText( issueRT.getText() );
    //carriage return:
    stream.writeText("<p>");
    //Add the end tag.
    stream.writeText("&lt;/LWST&gt;");
    //Create the email body field.
    var emailBody:NotesMIMEEntity = maildoc.createMIMEEntity("body");
    emailBody.setContentFromText(stream,"text/html;charset=UTF-8", 1725);

    stream.close();
于 2012-09-13T18:36:28.053 回答
1

在我之后说:“网络上没有 RichText,这是圣诞节过去的幽灵,只有 MIME”:-) stw

将邮箱首选项(在 names.nsf 中)设置为“首选 Mime”,将“正文”字段设置为“存储为 MIME”。这为您省去了从/到 MIME/RichtText 不断转换(可能会丢失格式)的麻烦。然后,您可以在提交时拦截 ckedit 字段或使用 doc.getMimeEntity 来获取正文字段。帮助中的 .getMimeEntity 有您正在寻找的代码示例

于 2012-09-08T03:22:26.943 回答
1

我创建了一个 10 旧应用程序的 XPages 版本,该应用程序将富文本(输入)添加到现有字段。这段代码听起来可能会对您有所帮助:

var moveAddBody = function(doc:NotesDocument){
var addRt:NotesMIMEEntity = doc.getMIMEEntity("addBody");
var attFiles:NotesRichTextItem = doc.getFirstItem("attachedFiles");
if(addRt == null && attFiles == null) return;
if(attFiles != null) {
//  println("attFiles: " + attFiles.getText() + ", length=" + attFiles.getValueLength());
}
//  if(addRt != null && @Length(addRt.getContentAsText().trim()) <= 28) return;     // The standard tags in an empty field fills 28 chars
// Something to move...
var tmpDoc:NotesDocument = doc.getParentDatabase().createDocument();            // Never saved - just left in the wind...
var mime:NotesMIMEEntity = tmpDoc.createMIMEEntity("myBody");
var stream:NotesStream = session.createStream();
var formatter = java.text.SimpleDateFormat('yyyy-MM-dd HH:mm');
var time = formatter.format(@Now());
var logLine:String = '<font size="2" color="#008080" face="sans-serif"><b>' + time + " - " + @Name("[Abbreviate]",@UserName()) + '</b></font>';
stream.writeText(logLine);
if(addRt != null && @Length(addRt.getContentAsText().trim()) > 28) {
    stream.writeText('<font size="2" face="sans-serif">');      // Enforce "simiilar" font type/size...
    stream.writeText(addRt.getContentAsText());
    stream.writeText('</font>');
}
mime.setContentFromText(stream, "text/html", NotesMIMEEntity.ENC_NONE);
var prevMime = session.isConvertMime();
session.setConvertMime(true);
tmpDoc.closeMIMEEntities(true,"myBody");
var rt:NotesRichTextItem = doc.getFirstItem("Body");
var body = null;
if (rt != null) {
    body = rt.copyItemToDocument(tmpDoc,"Body");
    rt.remove();
}
rt = doc.createRichTextItem("Body");
var rtMime:NotesRichTextItem = tmpDoc.getFirstItem("myBody");
rt.appendRTItem(rtMime);
if(attFiles != null) {
    if(addRt == null) rt.addNewLine(1);
    rt.appendRTItem(attFiles);
    attFiles.remove();
}
if(body != null) {
    rt.addNewLine(2);
    rt.appendRTItem(body);
}
if(addRt != null) {
    addRt.remove();
    addRt.recycle();
}
session.setConvertMime(prevMime);
return true;
}

您将需要取出上面的一些代码,因为它还添加了日期/时间和一些格式(在有人低语“css ...”之前与 Notes 版本兼容 ;-))。它还处理附件。

希望你能用它来解决你的问题?

/约翰

于 2012-09-08T17:28:28.320 回答
0

如果您想从您的应用程序创建邮件,请查看来自 OpenNTF 的 XPages Snippet:http://openntf.org/XSnippets.nsf/snippet.xsp?id=emailbean-send-dominodocument-html-emails- cw- Embedded-images-attachments-custom-headerfooter这个 bean 提供了你需要的一切。

于 2012-09-08T09:51:40.163 回答