Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript xpage csjs代码未通过gmail api以正确格式发送内联图像和附件电子邮件_Javascript_Xpages_Gmail Api - Fatal编程技术网

Javascript xpage csjs代码未通过gmail api以正确格式发送内联图像和附件电子邮件

Javascript xpage csjs代码未通过gmail api以正确格式发送内联图像和附件电子邮件,javascript,xpages,gmail-api,Javascript,Xpages,Gmail Api,我的xpage有以下字段 使用evo:InputRichtext编辑器的Xpage来自: 我正在使用gmail api发送电子邮件 我在Ckeditor中添加格式化文本、内联图像和文件 使用按钮使用csjs从to、Subject和Ckeditor组件获取值 通过gmail服务器发送的消息,但未接收wysiwyg格式。不显示图像,只显示文件名 我知道这是跨平台编码问题,我不知道这是什么 以下是按钮代码: var to = XSP.getElementById("#{id:To}").value;

我的xpage有以下字段

  • 使用evo:InputRichtext编辑器的Xpage来自:
  • 我正在使用gmail api发送电子邮件
  • 我在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);
    

    当您发送带有附件和内联图像的Mime电子邮件时,它包含许多部分

    • HTML将是文本/HTML部分
    • 图像将类似于图像/jpeg或图像/png部分
    • 附件将类似于应用程序/pdf部分
    它们都被捆绑在一个多部分结构中

    内联映像应作为父级“多部分/相关”mime部件的同级进行定位。 如果有附件,则它们位于“多部分/混合”父项下

    如果要发送带有附件和内联线的mime电子邮件,它将采用以下结构

    • 多部分/混合
      • 多部分/相关
        • 文本/html
        • 图像/jpeg
        • 图像/jpeg
      • 申请表格/pdf
    调用CKEditor的getData函数时,只会得到text/html mime部分。 html中有一些标记,它们在某处引用图像。它绝对不包含关于附件的任何信息

    图像可以通过3种不同的方式引用

  • 作为指向internet某个位置的href。ie.href=”http://someserver.com/someimage.gif" 如果您正在发送电子邮件,您可能不希望这样做,除非您对接收电子邮件的人感到满意,必须单击“在此电子邮件中显示图像”。此外,您还可以确保图像不是指向某个内部网服务器的链接,而该服务器是电子邮件接收者无法访问的

  • 作为数据URI。 这就是所有图像数据实际上位于imgsrc标记内的html中的位置。 CKEditor实际上允许您(在firefox中)以这种格式粘贴图像,但是如果您发送电子邮件,您也不希望允许这种格式,因为并非每个电子邮件客户端都支持这种格式。Gmail不会以这种格式显示图像

  • 作为嵌入式图像。 在这里,图像作为mime结构中的text/html的同级存储,正如我前面所描述的。该图像的内容配置为“inline”,并具有内容ID 如果您正在发送电子邮件,这是您真正想要的格式,因为您可以确保接收者能够看到它们

  • 如果您必须在客户端执行所有操作,那么您需要找到某种方法从服务器获取嵌入的映像和附件数据,以包含在您的呼叫中。
    否则,您最好尝试在服务器端执行此操作,但无论如何,您都需要以某种方式让服务器参与进来。

    我使用的是chrome。通过gmail向我自己发送了一封电子邮件,内联图像按原样显示。但当从ckeditor发送到gmail时。内联图像和文件位于正确位置,但图像未按原样显示,并显示文本filename.txt。我正在寻找一个代码来将ckeditor内容转换为mime,它构建了您上面提到的整个结构。hi Mohan,正如我前面所解释的,ckeditor可以为您提供图像数据的唯一情况是,如果图像作为数据URI粘贴进来。即便如此,gmail也不会显示。CKeditor知道图像的位置,但不知道内容。附件也是一样。我不知道有什么其他方法可以解释这一点,CKEditor只会给你文本/HTMLMIMEPART,所以不可能只用CKEditor来构建整个电子邮件。要获取其他部件,您必须向服务器发出额外请求。你有什么理由在客户端这么做吗?为什么不在服务器端呢?谢谢。domino是应用程序环境,邮件环境是gmail。我正在使用gmail api发送,它需要使用客户端javascript与gmail服务器进行身份验证。这就是我使用CSJS的原因。我使用SSJS保存后端notes文档,它保存图像(sametime表情)和简单文本文件,但在notes中没有正确显示。它的意思是“注意事项”。这就是为什么我在寻找客户端解决方案来转换RFC2822或5322格式的所有消息。node.js中提供了该功能,但关于node.js与XPages集成的文档较少。这是CKeditor中的内容。“这是一个测试。这是sametime表情符号,它是gif.file.test.txt。这是一个简单的.txt文件。两者都是内联的。”(无法复制图像)。getData()方法将控制台日志显示为

    这是一个测试。这是sametime表情符号,它是gif。文件这是一个简单的.txt文件。两者都是内联的。

    具有源代码。NotesMimeEntity为文本、图像和附件创建具有正确内容类型定义的Mime实体,如下所示:字段名称:邮件体数据类型:Mime部分数据长度:208字节Seq Num:2 Dup项ID:0字段标志:摘要“Mime版本:1.0内容类型:多部分/混合;边界=”==IFJRGLKFGIR29455UHRUHIHD”内容类型:多部分/混合;边界=“==IFJRGLKFGIR29455UHRUHIHD”MIME版本:1.0”,但没有文件信息。虽然richtextCKeditor有文件soruce,但它是html格式。我需要一些javascript代码来自动查找边界。
    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);
                });
    
    
            }