我有一個帶有豐富文本字段的筆記形式,名爲「Body」。我將該字段的「存儲」屬性設置爲「將內容存儲爲HTML和MIME」。NotesRichTextItem.getMIMEEntity()總是返回null
現在,我正在Notes客戶端中使用該表單創建一個新文檔。
但是,如果我嘗試使用NotesRichTextItem.getMIMEEntity()訪問SSJS中的富文本字段值,它始終返回null。
我錯過了什麼嗎?
非常感謝您的幫助。
更新2:2015年2月12日
我做了一些更多的測試,我發現原因,爲什麼它不會承認的富文本字段作爲MIME類型的,而是始終返回它豐富文本︰
原因是我訪問數據庫與「sessionAsSigner」,而不是隻使用「數據庫」。
如果我刪除「sessionAsSigner」並改爲使用「database」,使得XPage對公共訪問用戶不可用,那麼,我不得不登錄,代碼將其識別爲MIME類型,並且我可以獲得NotesMIMEEntity的句柄。
不幸的是,XPage必須提供給公共訪問用戶,我必須使用sessionAsSigner。
當我打開文檔屬性並查看富文本字段時,可以看到「字段標誌」是「SIGN SEAL」。我的猜測是,這就是爲什麼sessionAsSigner不起作用,但這只是一個猜測。
任何想法?
更新1:2015年2月12日
這裏是我用我的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, "<part2>", 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 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, "<part2>", 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();
你好,Dan,工作!非常感謝你 – 2015-02-12 21:35:29