xpage-csjs代码没有通过gmailapi以正确格式的电子邮件发送内联图像和附件
xpage csjs code not sending inline images and attachment in proper format email thru gmail api
我的xpage有以下字段
- 带有evo:InputRichtext的Xpage来自以下片段:
- 我正在使用gmailapi发送电子邮件
- 我正在Ckeditor中添加格式化文本、内联图像和文件
- 使用按钮使用csjs从to、Subject和Ckeditor组件中获取值
- 通过gmail服务器发送的消息,但未接收到wysiwyg格式。不显示图像,只显示文件名
我知道这是跨平台编码的问题,我不知道那是什么。
这是按钮代码:
var to = XSP.getElementById("#{id:To}").value;
var subject = XSP.getElementById("#{id:Subject}").value;
var richCKEditor = CKEDITOR.instances["#{id:inputRichText1}"];
var dt=richCKEditor.getData();
var content = richCKEditor.dataProcessor.toHtml(dt);
console.log(to);
console.log(subject);
console.log(content);
var email ="From: 'm' <"+to+">'r'n"+
"To: "+ to +"'r'n"+
"Subject: "+subject+"'r'n"+"'r'n"+
"MIME-Version: 1.0'n"+
//"Content-Type: text/html; charset='"UTF-8'"'n" +
"Content-Type: multipart/mixed; 'n" +
content;
console.log(email);
auth();
send(email);
这里是我使用的gmailapi功能与来自gmailapi站点的现有身份验证
function send(email) {
console.log(email);
sendMessage(email, function (response) {
//console.log("Handed to Gmail API for sending");
{console.log(response)}
});
alert("Message sent");
}
function sendMessage(email, callback) {
//auth();
gapi.client.load('gmail', 'v1',function(){
var base64EncodedEmail = btoa("MIME-Version: 1.0'n"+
"Content-Type: text/html; charset='"UTF-8'"'n" +
// "Content-Type: multipart/mixed; 'n" +
//"Content-length: 5000'n" +
//"Content-Transfer-Encoding: message/rfc822'n"+
email).replace(/'//g,'_').replace(/'+/g,'-');
// alert("Message sending'n" + base64EncodedEmail.toString());
console.log(base64EncodedEmail);
var request = gapi.client.gmail.users.messages.send({
'userId': 'me',
'resource': {
'raw': base64EncodedEmail
}
});
request.execute(callback);
});
}
当您发送带有附件和内联图像的Mime电子邮件时,它包含许多部分。
- HTML将是text/HTML部分
- 图像将类似于图像/jpeg或图像/png部分
- 附件将类似于应用程序/pdf部分
它们在一个多部分结构中连接在一起。
内联图像应作为父"multipart/related"mime部分的同级。如果存在附件,则它们位于"多部分/混合"父项下。
如果你发送一封带有附件和内联的mime电子邮件,它将采用以下结构
- 多部分/混合
- 多部分/相关
- text/html
- 图像/jpeg
- 图像/jpeg
- 应用程序/pdf
- 多部分/相关
当您调用CKEditor的getData函数时,您只得到text/html/mime部分html中的一些标签引用了某个位置的图像。它将绝对不包含有关附件的信息。
图像可以通过三种不同的方式进行参考
-
作为指向某个internet位置的href。即href="http://someserver.com/someimage.gif"如果你正在发送电子邮件,你可能不想要这样,除非你对收到电子邮件的人点击"在这封电子邮件中显示图像"感到满意。此外,您可以确保该图像不是指向某个电子邮件接收器无法访问的intranet服务器的链接。
-
作为数据URI。https://en.wikipedia.org/wiki/Data_URI_scheme这是所有图像数据实际位于img src标记内的html中的位置。CKEditor实际上会允许你(在firefox中)以这种格式粘贴图像,但如果你正在发送电子邮件,你也不想允许这种格式,因为不是每个电子邮件客户端都支持这种格式。Gmail不会以这种格式显示图像。
-
作为嵌入图像。这就是图像作为mime结构中text/html的同级存储的地方,正如我上面所描述的那样。图像将具有"inline"的内容处置,并且它将具有内容ID如果您发送电子邮件,这是您真正想要的格式,因为您可以确保收件人能够看到它们。
如果您必须在客户端完成所有工作,那么您将需要找到某种方法从服务器获取嵌入的图像和附件数据,以包含在您的调用中。否则,您最好尝试在服务器端执行此操作,但无论如何,您都需要以某种方式让服务器参与进来。
- 如果我在javascript中输入无效的电子邮件或空白,如何显示特定的文本框边框红色
- 使用HTML/Javascript表单使用ActiveXObject创建带有嵌入图像的outlook电子邮件
- 如何使用谷歌应用程序脚本从电子邮件中提取内联文件/图像
- jSignature图像导出到PHP电子邮件
- 打印您的网页屏幕并发送带有打印图像的电子邮件
- “电子邮件”在电话间隙中共享的图像路径
- 电子邮件未显示在图像内部
- html javascript电子邮件图像
- 如何在javascript电子邮件链接上用图像替换文本
- 通过PHP电子邮件将图像文件附加到电子邮件表单
- xpage-csjs代码没有通过gmailapi以正确格式的电子邮件发送内联图像和附件
- JavaScript:是否可以仅使用JavaScript将图像附加到电子邮件中?
- 电子邮件跟踪在Gmail使用图像标签
- 表单不发送图像到电子邮件
- 要将图像附加到html按钮上的电子邮件,请单击
- 发送电子邮件与图像附件在node.js
- 使用JavaScript通过Parse's Sendgrid模块将图像附加到电子邮件
- 发送画布图像作为电子邮件附件
- Anychart图表在电子邮件正文作为图像
- 电子邮件中包含图像/文本/插图的HTML滑块