【问题标题】:Copy MIME parts from mail to another document - converting MIME <-> Richtext将 MIME 部分从邮件复制到另一个文档 - 转换 MIME <-> Richtext
【发布时间】: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


【解决方案1】:

我相信this IBM technote 可以解释您的问题。对 AppendRTItem() 的调用不会复制与附件关联的 $File 项。

【讨论】:

  • 那么,有什么解决方法吗?我的意思是,除了附件,所有格式都丢失了,所以邮件设计也丢失了。。加注指的是 Lotusscript 代码,而代理是用 Java 编写的。
  • 您需要重新附加附件。如果您使用 ConvertMIME=false,则 MIME 项的格式不应该丢失,但现在我考虑得更多......您可能必须使用 NotesMIMEEntity 类来选择性地仅将非附件子实体复制到您的描述项。 LotusScript 类和 Java 类在命名和语法上只有细微的差别。
  • 我刚刚使用getMIMEEntity java方法得到了body的MIMEEntity。如何将此实体复制到另一个文档?我尝试了 Document.copyItem 方法,但它似乎只复制了一个 MIME 部分。现在即使没有分离附件也可以,因为我没有想法。
  • 您是否创建了新的富文本项目,然后使用:rtiDESC = newDoc.copyItem(rtiOLD,"Description");
  • 是的,但是为了保留原始内容,我必须使用 ConvertMIME = false,并且我调用 RichTextItem rtiOLD = (RichTextItem)mailDoc.getFirstItem("Body"),我得到了无效的 RichTextItem 错误。
【解决方案2】:

我通过多个使用方法 NotesDocument.getFirstItem 然后 NotusDocument.AppendItemValue 解决了问题,所以我可以简单地复制整个消息正文。

【讨论】:

  • 在哪里可以解决 dis 问题,当我尝试将邮件 mimeemtity 保存到另一个文档时,我丢失了所有内联图像,你可以更新上面的脚本,我可以看到你对 dis 的独奏吗?跨度>
猜你喜欢
  • 2017-12-19
  • 2012-10-16
  • 2013-02-13
  • 2019-04-06
  • 1970-01-01
  • 2011-06-07
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
相关资源
最近更新 更多