将 adf 富文本编辑器中的嵌入图像发送到 outlook 不起作用
Sending embedded image in adf rich text editor to outlook is not working
我正在使用 Jdeveloper 11g R2,我遇到了这种情况。
我有一个 .jspx 页面,客户可以通过它发送电子邮件。
在正文中,我使用的是 ADF 富文本编辑器。在此 ADF 富文本编辑器中,用户将能够在其中插入图像和文本。图像需要在编辑器中而不是附件中。
通常这个图像将是一个屏幕截图,用户将按下 PrtScn 按钮,然后在编辑器中通过屏幕截图。
如果我转到源代码,我会发现图像的源代码将如下所示
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAOECAYA.........>
另外,我正在使用 Java outlook 连接器,以便能够将电子邮件发送到 outlook。
我将编辑器绑定到我的 bean,下面是我发送它的方式:
`Outlook outlookApplication = new Outlook();
OutlookFolder outbox = outlookApplication.getDefaultFolder(FolderType.OUTBOX);
OutlookMail mail = (OutlookMail) outbox.createItem(ItemType.MAIL);
mail.setSubject("Hello HELLO!!!");
mail.setTo("User");
String edtrContent = geteditor().getValue().toString();
mail.setHTMLBody("<HTML><Body>" + edtrContent + "</Body></HTML>");
mail.send
邮件成功发送到我的outlook邮件,我只能阅读发送的文本。另一方面,我无法看到在富文本编辑器中发送的图像,它显示为一个带有红色 X 的小框。
HTML Outlook 中的邮件由 Word 而非 IE 呈现。 Word 不处理嵌入的 (src=data/image) 图像。
您可以引用外部图像或图像附件 <img src="cid:xyz">
,其中 xyz 是图像附件的 Content-ID MIME header 的值。
正如 Dmitry 所注意到的,您需要添加嵌入式附件才能将图像添加到邮件正文中。
- 使用 Attachments.Add 方法添加附件。
- 使用 PropertyAccessor 对象设置 PR_ATTACH_CONTENT_ID 属性。
为消息正文中的引用设置 cid 值(参见#2)。
string img = "<br/><p><o:p><img src=\"" + att.FileName
+ "\" width=1 height=1 border=0 /></o:p></p>";
item.HTMLBody = item.HTMLBody.Replace("</body>", img + "</body>");
string PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001E";
string HIDDEN_ATTACHMENT = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B";
var pa = att.PropertyAccessor;
if (pa != null)
{
pa.SetProperty(PR_ATTACH_CONTENT_ID, att.FileName);
pa.SetProperty(HIDDEN_ATTACHMENT, false);
}
我正在使用 Jdeveloper 11g R2,我遇到了这种情况。
我有一个 .jspx 页面,客户可以通过它发送电子邮件。 在正文中,我使用的是 ADF 富文本编辑器。在此 ADF 富文本编辑器中,用户将能够在其中插入图像和文本。图像需要在编辑器中而不是附件中。 通常这个图像将是一个屏幕截图,用户将按下 PrtScn 按钮,然后在编辑器中通过屏幕截图。 如果我转到源代码,我会发现图像的源代码将如下所示
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAOECAYA.........>
另外,我正在使用 Java outlook 连接器,以便能够将电子邮件发送到 outlook。 我将编辑器绑定到我的 bean,下面是我发送它的方式:
`Outlook outlookApplication = new Outlook();
OutlookFolder outbox = outlookApplication.getDefaultFolder(FolderType.OUTBOX);
OutlookMail mail = (OutlookMail) outbox.createItem(ItemType.MAIL);
mail.setSubject("Hello HELLO!!!");
mail.setTo("User");
String edtrContent = geteditor().getValue().toString();
mail.setHTMLBody("<HTML><Body>" + edtrContent + "</Body></HTML>");
mail.send
邮件成功发送到我的outlook邮件,我只能阅读发送的文本。另一方面,我无法看到在富文本编辑器中发送的图像,它显示为一个带有红色 X 的小框。
HTML Outlook 中的邮件由 Word 而非 IE 呈现。 Word 不处理嵌入的 (src=data/image) 图像。
您可以引用外部图像或图像附件 <img src="cid:xyz">
,其中 xyz 是图像附件的 Content-ID MIME header 的值。
正如 Dmitry 所注意到的,您需要添加嵌入式附件才能将图像添加到邮件正文中。
- 使用 Attachments.Add 方法添加附件。
- 使用 PropertyAccessor 对象设置 PR_ATTACH_CONTENT_ID 属性。
为消息正文中的引用设置 cid 值(参见#2)。
string img = "<br/><p><o:p><img src=\"" + att.FileName + "\" width=1 height=1 border=0 /></o:p></p>"; item.HTMLBody = item.HTMLBody.Replace("</body>", img + "</body>"); string PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001E"; string HIDDEN_ATTACHMENT = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B"; var pa = att.PropertyAccessor; if (pa != null) { pa.SetProperty(PR_ATTACH_CONTENT_ID, att.FileName); pa.SetProperty(HIDDEN_ATTACHMENT, false); }