Xpages NotesRichTextItem.getMIMEEntity()始终返回null

Xpages NotesRichTextItem.getMIMEEntity()始终返回null,xpages,xpages-ssjs,richtext,Xpages,Xpages Ssjs,Richtext,我有一个notes表单,上面有一个富文本字段,称为“Body”。我已经将字段的“存储”属性设置为“将内容存储为HTML和MIME” 现在,我正在Notes客户机中使用该表单创建一个新文档 但是,如果我尝试使用NotesRichTextItem.getMIMEEntity()访问SSJS中的富文本字段值,它总是返回null 我错过什么了吗 提前谢谢你的帮助 更新2:2015年12月2日 我做了更多的测试,找到了原因,为什么它不能将富文本字段识别为MIME类型,而总是将其作为富文本返回: 原因是我使

我有一个notes表单,上面有一个富文本字段,称为“Body”。我已经将字段的“存储”属性设置为“将内容存储为HTML和MIME”

现在,我正在Notes客户机中使用该表单创建一个新文档

但是,如果我尝试使用NotesRichTextItem.getMIMEEntity()访问SSJS中的富文本字段值,它总是返回null

我错过什么了吗

提前谢谢你的帮助

更新2:2015年12月2日

我做了更多的测试,找到了原因,为什么它不能将富文本字段识别为MIME类型,而总是将其作为富文本返回:

原因是我使用“sessionAsSigner”访问数据库,而不仅仅是使用“database”

如果我删除“sessionAsSigner”而改用“database”,则XPage对公共访问用户不可用,因此,我被迫登录,代码将其识别为MIME类型,我可以获得NotesMiemEntity的句柄

不幸的是,XPage必须对公共访问用户可用,我必须使用sessionAsSigner

当我打开文档属性并查看富文本字段时,我可以看到“字段标志”是“签名印章”。我的猜测是,这就是sessionAsSigner不起作用的原因,但这只是一个猜测

有什么想法吗

更新1:2015年12月2日

以下是我在SSJS中使用的代码:

var oDBCurrent:NotesDatabase = sessionAsSigner.getDatabase(session.getServerName(), session.getCurrentDatabase().getFilePath());
var oVWMailProfiles:NotesView = oDBCurrent.getView('$vwSYSLookupEmailProfiles');
var oVWPWResetRecipient:NotesView = oDBCurrent.getView('$vwPWPMLookupPWResetNotificationProfiles');
var oDocPWResetRecipient:NotesDocument = null;
var oDocMailProfile:NotesDocument = null;
var oDocMail:NotesDocument = null;

var sServer = session.getServerName();

oDocPWResetRecipient = oVWPWResetRecipient.getDocumentByKey(sServer, true);
oDocMailProfile = oVWMailProfiles.getDocumentByKey('.MailTemplate', true);
oDocMail = oDBCurrent.createDocument();

//Set default fields
oDocMail.replaceItemValue('Form', 'Memo');
oDocMail.replaceItemValue('Subject', oDocMailProfile.getItemValueString('iTxtSubject'));
oDocMail.replaceItemValue('SendTo', oDocPWResetRecipient.getItemValue('iNmesRecipients'))

//Get body text
var oItem:NotesItem = oDocMailProfile.getFirstItem("Body");
var entity:NotesMIMEEntity = oItem.getMIMEEntity();

//Create email body
var tmp = entity.getContentAsText();

//Replace <part2> with part 2 of the password
tmp = @ReplaceSubstring(tmp, "&lt;part2&gt;", sPWPart2);

//Set content of Body field as MIME type                                            
var body = oDocMail.createMIMEEntity();
var stream = session.createStream();                                
stream.writeText(tmp);
body.setContentFromText(stream, "text/html; charset=iso-8859-1", 0);        

//Send email
oDocMail.send();
var oDBCurrent:NotesDatabase=sessionAsSigner.getDatabase(session.getServerName(),session.getCurrentDatabase().getFilePath());
var oVWMailProfiles:NotesView=oDBCurrent.getView(“$vwSYSLookupEmailProfiles”);
var ovwpWwresetRecipient:NotesView=oDBCurrent.getView(“$VWPPMLookupPwresetNotificationProfiles”);
var-oDocPWResetRecipient:NotesDocument=null;
var-oDocMailProfile:NotesDocument=null;
var-oDocMail:NotesDocument=null;
var sServer=session.getServerName();
oDocPWResetRecipient=oVWPWResetRecipient.getDocumentByKey(sServer,true);
oDocMailProfile=oVWMailProfiles.getDocumentByKey('.MailTemplate',true);
oDocMail=oDBCurrent.createDocument();
//设置默认字段
oDocMail.replaceItemValue('Form','Memo');
oDocMail.replaceItemValue('Subject',oDocMail.getItemValueString('iTxtSubject');
oDocMail.replaceItemValue('SendTo',oDocPWResetRecipient.getItemValue('iNmesRecipients'))
//获取正文文本
var oItem:NotesItem=oDocMailProfile.getFirstItem(“正文”);
变量实体:NotesMIMEEntity=oItem.getMIMEEntity();
//创建电子邮件正文
var tmp=entity.getContentAsText();
//替换为密码的第2部分
tmp=@ReplaceSubstring(tmp,“part2”,sPWPart2);
//将正文字段的内容设置为MIME类型
var body=oDocMail.createMIMEEntity();
var stream=session.createStream();
stream.writeText(tmp);
setContentFromText(流,“text/html;charset=iso-8859-1”,0);
//发送电子邮件
oDocMail.send();
正如我前面提到的,我也尝试过:

var oDBCurrent:NotesDatabase = sessionAsSigner.getDatabase(session.getServerName(), session.getCurrentDatabase().getFilePath());
var oVWMailProfiles:NotesView = oDBCurrent.getView('$vwSYSLookupEmailProfiles');
var oVWPWResetRecipient:NotesView = oDBCurrent.getView('$vwPWPMLookupPWResetNotificationProfiles');
var oDocPWResetRecipient:NotesDocument = null;
var oDocMailProfile:NotesDocument = null;
var oDocMail:NotesDocument = null;

var sServer = session.getServerName();

oDocPWResetRecipient = oVWPWResetRecipient.getDocumentByKey(sServer, true);
oDocMailProfile = oVWMailProfiles.getDocumentByKey('.MailTemplate', true);
oDocMail = oDBCurrent.createDocument();


//Set default fields
oDocMail.replaceItemValue('Form', 'Memo');
oDocMail.replaceItemValue('Subject', oDocMailProfile.getItemValueString('iTxtSubject'));
oDocMail.replaceItemValue('SendTo', oDocPWResetRecipient.getItemValue('iNmesRecipients'))

//Get body text
var entity:NotesMIMEEntity = oDocMailProfile.getMIMEEntity('Body');

//Create email body
var tmp = entity.getContentAsText();

//Replace <part2> with part 2 of the password
tmp = @ReplaceSubstring(tmp, "&lt;part2&gt;", sPWPart2);

//Set content of Body field as MIME type                                            
var body = oDocMail.createMIMEEntity();
var stream = session.createStream();                                
stream.writeText(tmp);
body.setContentFromText(stream, "text/html; charset=iso-8859-1", 0);        

//Send email
oDocMail.send();
var oDBCurrent:NotesDatabase=sessionAsSigner.getDatabase(session.getServerName(),session.getCurrentDatabase().getFilePath());
var oVWMailProfiles:NotesView=oDBCurrent.getView(“$vwSYSLookupEmailProfiles”);
var ovwpWwresetRecipient:NotesView=oDBCurrent.getView(“$VWPPMLookupPwresetNotificationProfiles”);
var-oDocPWResetRecipient:NotesDocument=null;
var-oDocMailProfile:NotesDocument=null;
var-oDocMail:NotesDocument=null;
var sServer=session.getServerName();
oDocPWResetRecipient=oVWPWResetRecipient.getDocumentByKey(sServer,true);
oDocMailProfile=oVWMailProfiles.getDocumentByKey('.MailTemplate',true);
oDocMail=oDBCurrent.createDocument();
//设置默认字段
oDocMail.replaceItemValue('Form','Memo');
oDocMail.replaceItemValue('Subject',oDocMail.getItemValueString('iTxtSubject');
oDocMail.replaceItemValue('SendTo',oDocPWResetRecipient.getItemValue('iNmesRecipients'))
//获取正文文本
var实体:NotesMIMEEntity=oDocMailProfile.getMIMEEntity('Body');
//创建电子邮件正文
var tmp=entity.getContentAsText();
//替换为密码的第2部分
tmp=@ReplaceSubstring(tmp,“part2”,sPWPart2);
//将正文字段的内容设置为MIME类型
var body=oDocMail.createMIMEEntity();
var stream=session.createStream();
stream.writeText(tmp);
setContentFromText(流,“text/html;charset=iso-8859-1”,0);
//发送电子邮件
oDocMail.send();

您可以从文档中获取MIMEEntity,而不是从Richtext项。请参见此处的一个示例(从第103行开始):

您从文档而不是从Richtext项获得MIMEEntity。请参见此处的一个示例(从第103行开始):

您从文档而不是从Richtext项获得MIMEEntity。请参见此处的一个示例(从第103行开始):

您从文档而不是从Richtext项获得MIMEEntity。请参见此处的示例(从第103行开始):

您应该将会话设置为不将MIME转换为RichText。 在代码的开头添加这个

session.setConvertMime(false);

您应该将会话设置为不将MIME转换为RichText。 在代码的开头添加这个

session.setConvertMime(false);

您应该将会话设置为不将MIME转换为RichText。 在代码的开头添加这个

session.setConvertMime(false);

您应该将会话设置为不将MIME转换为RichText。 在代码的开头添加这个

session.setConvertMime(false);

尝试调用sessionAsSigner.setConvertMime(false)

尝试调用sessionAsSigner.setConvertMime(false)

尝试调用sessionAsSigner.setConvertMime(false)

尝试调用sessionAsSigner.setConvertMime(false)

你好,奥利弗,谢谢你的回复。我也尝试过调用“var entity:notesimemeentity=NotesDocument.getmimeeentity(“Body”);”,其中“Body”是富文本字段的名称。但它也返回null。还有其他想法吗?所以这显然取决于内容是在哪里创建的。您是否测试过通过XPage而不是使用Notes表单创建/保存内容?这是妈妈吗