【发布时间】:2014-03-31 13:25:47
【问题描述】:
你好 Domino 程序员!
我在 Lotus 数据库 + XPages 上工作,遇到了以下问题:
我以“备忘录”文件的形式直接接收到我的数据库的邮件。我想将附件和邮件正文(带有嵌入的图像)分成两个富文本字段。为了实现这一点,我制作了一个 java 代理。想法似乎适合我的解决方案,但每次我尝试将 Richtextitem“正文”从邮件复制到另一个文档时,创建的项目包含 Richtext 元素而不是 MIME 部分。没关系,但是通过这个,整个消息似乎丢失了格式。我知道存在一个“开关”可以防止这种情况发生 - session.setConvertMime(false)。我在访问源文档之前使用它,但没有任何效果 - 我的 Richtext 字段是空白的。
所以我有一堆问题:
- 有没有办法复制备忘录文档的正文来存储格式化的电子邮件内容?我有兴趣查看来自 XPages 的电子邮件。
- 当我使用 FileDownload、FileUpload 和 RichTextControl 时 - 是否建议将消息和附件的内容保留在后端文档的同一字段中?
任何帮助将不胜感激。
// 我使用 9.0 设计器和 9.0 开发服务器。
//这是我目前使用的代码
Session session = getSession();
String TMPSAVE_PATH = System.getProperty("java.io.tmpdir");
Database db = session.getCurrentDatabase();
View v = db.getView("Inbox");
ViewEntryCollection vec = v.getAllEntries();
ViewEntry entry = vec.getFirstEntry();
while(entry!=null)
{
Document mailDoc = entry.getDocument();
Document newDoc = db.createDocument();
newDoc.replaceItemValue("Form", "Ticket");
newDoc.replaceItemValue("Title","[MAIL] " + mailDoc.getItemValueString("Subject"));
newDoc.replaceItemValue("Status", "0");
newDoc.computeWithForm(true, true);
newDoc.save(false,true);
RichTextItem rtiOLD = (RichTextItem)mailDoc.getFirstItem("Body");
newDoc.removeItem("Description");
RichTextItem rtiDESC = newDoc.createRichTextItem("Description");
rtiDESC.appendRTItem(rtiOLD);
newDoc.removeItem("Attachment");
RichTextItem rtiATT = newDoc.createRichTextItem("Attachment");
newDoc.save(false,true);
List attachmentList = new ArrayList();
Vector vector = rtiDESC.getEmbeddedObjects();
if(vector.size()>0)
{
for (int i = 1; i <= vector.size(); i++)
{
String attachmentName = vector.get(i-1).toString();
EmbeddedObject obj = (EmbeddedObject)vector.get(i-1);
if(obj!=null)
{
attachmentList.add(attachmentName);
obj.extractFile(TMPSAVE_PATH + attachmentName);
obj.remove();
}
}
}
newDoc.save(false,true);
if(attachmentList.size()>0)
{
for (int i = 0; i < vector.size(); i++)
{
rtiATT.embedObject(EmbeddedObject.EMBED_ATTACHMENT, "", TMPSAVE_PATH + attachmentList.get(i), (String)attachmentList.get(i));
File file = new File(TMPSAVE_PATH + attachmentList.get(i));
file.delete();
}
}
newDoc.save(false,true);
}
entry = vec.getNextEntry(entry);
//更改标题以适合问题。
【问题讨论】:
-
显示您的代码。只有这样,我们才能了解您的内容未正确复制的原因。
标签: java email xpages lotus-notes lotus