简体   繁体   English

将图片从 Google Drive 添加到 html email 主体

[英]Add pics from Google Drive to html email body

Is it possible to add a png / gif file from the google disk to the email htmlbody generated by the google script?是否可以将 google 磁盘中的 png / gif 文件添加到由 google 脚本生成的 email htmlbody 中? I have the code as below, the document is publicly shared, Drive API and Gmail API are enabled.我有如下代码,该文档是公开共享的,驱动器 API 和 Gmail API 已启用。 Is this a problem sharing the file from the disk or an error in my code, please help这是从磁盘共享文件的问题还是我的代码中的错误,请帮助

 function sendaEmail(){ var templ = HtmlService.createTemplateFromFile('template'); var message = templ.evaluate().getContent(); MailApp.sendEmail({ to: 'email@gmail.com', subject: "subject", htmlBody: message }); }
 <.DOCTYPE XHTML 1;0 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html, charset=UTF-8" /> <title>Title</title> <meta name="viewport" content="width=device-width. initial-scale=1:0"/> </head> <body style="margin; 0: padding; 0:"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td> <table align="center" border="0" cellpadding="0" cellspacing="0" width="600" style="border-collapse; collapse:"> <tr> <td align="center" bgcolor="#70bbd9" style="padding; 40px 0 30px 0?"> <img src= <.= DriveApp.getFileById("1tKxUgeX_B27vnpNNpKy1jF_0zOxrBhmL");getAs("image/gif")?:> alt="Creating Email" width="300" height="230" style="display; block;" /> </td> </tr> </table> </td> </tr> </table> </body> </html>

First, you should be calling getUrl(), instead of getAs(), getAs() method returns a binary object not an Url, as you should be adding an URL over the src attribute of the HTML tags. First, you should be calling getUrl(), instead of getAs(), getAs() method returns a binary object not an Url, as you should be adding an URL over the src attribute of the HTML tags.

But, anyway, if you try it, it won't work specifically with the Google Drive links, because the DriveApp Urls are not canonical ones and are not intended to be attached as such on gmail services.但是,无论如何,如果您尝试它,它不会专门用于 Google Drive 链接,因为 DriveApp Urls 不是规范的,并且不打算像这样附加在 gmail 服务上。

So, how we attach inline image on an email from drive?那么,我们如何从驱动器中将内联图像附加到 email 上?

The simplest way to do it is as follow:最简单的方法如下:

function sendaEmail(){
  var templ = HtmlService
  .createTemplateFromFile('template');

  var message = templ.evaluate().getContent();

  var imageId = DriveApp.getFileById("YOURIMAGEID");
  var imageBlob = imageId.getBlob();  

  MailApp.sendEmail('your@email.com', "Subject",  "Hi", {htmlBody: message, inlineImages: {image: imageBlob}});

}

So, what you're doing here is attaching the image object directly, JS will handly this, how?所以,你在这里做的是直接附加图像object,JS会处理这个,如何? We have to modify the HTML template:我们必须修改 HTML 模板:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
     <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr>
        <td>
          <table align="center" border="0" cellpadding="0" cellspacing="0" width="600" style="border-collapse: collapse;">
            <tr>
              <td align="center" bgcolor="#70bbd9" style="padding: 40px 0 30px 0;">
                <img src= "cid:image" alt="Creating Email" width="300" height="230" style="display: block;" />
              </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
  </body>
</html>

And this will do, there are other ways but this is fairly simple.这会做,还有其他方法,但这很简单。

Here you'll find some info about the several ways for embedding images on emails: https://blog.mailtrap.io/embedding-images-in-html-email-have-the-rules-changed/在这里,您将找到有关在电子邮件中嵌入图像的几种方法的一些信息: https://blog.mailtrap.io/embedding-images-in-html-email-have-the-rules-changed/

If you need to add more images, proceed as follow:如果您需要添加更多图像,请执行以下操作:

  var imageId2 = DriveApp.getFileById("15FhCLXu6bQE70iNRCXVAve0TyyoeoUTA");
  var imageBlob2 = imageId2.getBlob(); 
  MailApp.sendEmail('your@email.com', "Subject",  "Hi", {htmlBody: message, inlineImages: {image: imageBlob, image2: imageBlob2}});

And now add another tag on the html现在在 html 上添加另一个标签

    <img src= "cid:image2" alt="Creating Email" style="display: block;" />

function sendImageWithEmail(imageName) {
  var imageName=imageName||'default.png';
  var imgFldrId='folderId';
  var imgs=DriveApp.getFolderById(imgFldrId).getFilesByType(MimeType.PNG);
  while(imgs.hasNext()) {
    var ifile=imgs.next();
    if(ifile.getName()==imageName) {
      var blob=ifile.getBlob();
      var b64Url='data:' + blob.getContentType() + ';base64,' + Utilities.base64Encode(blob.getBytes());
      break;
    }
  }
  if(b64Url) {
    GmailApp.sendEmail('email@email.com', 'An Image','' , {htmlBody:Utilities.formatString('<h1>The Image</h1><img src="%s" />',b64Url)});
  }else{
    SpreadsheetApp.getUi().alert('Houston. We have a problem');
  }
}

This is the original message body:这是原始邮件正文:

<h1>The Image</h1><img src=3D"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASA=
BIAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAQECAQEBAgICA=
gICAgICAQICAgICAgICAgL/2wBDAQEBAQEBAQEBAQECAQEBAgICAgICAgICAgICAgICAgICAgIC=
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgL/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQU=
BAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMU=
EGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTV=
FVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5=
usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQA=
AAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMo=
EIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZ=
GVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbH=
yMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD8l/8Aggr/AMG+a/8=
ABRbTh+1B+1Lq/iHwZ+ynpGvtpfhbwr4an/svxd8b9T0a7Vdeij10gt4W8DQTRSWU1zbqdQu5nn=
FpJYrbxXNz/ch4I/4Ie/8ABILwJ4Z0jwppn7Av7P2uWuj2cNpHqnjbwqfHXie+8pFX7Tq/ifxZd=
3d7qd45G5pJp2yzHAAwB7r/AME9vhf4a+Dv7D/7KXw58HQSW/hvQPgP8NZdMhnO+aKHWvDGn660=
EswGbl45NTePzWO+QRBnO4mvta2twccDPrznv3A9vzFAH5xf8OZ/+CSh6f8ABO/9lLnp/wAWn8O=
E/iBb59aef+CMn/BJbt/wTw/ZSx7/AAm8Of8Axj0x+dfprBZ5GMdPqADk+/XP8vrV8abuA49M8Z=
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3D=3D" />

It displays at comcast.net but not on Gmail.它显示在 comcast.net 上,但不在 Gmail 上。 I don't know why?我不知道为什么? Sorry对不起

yuri's answer is correct but I found a much simpler way.尤里的回答是正确的,但我找到了一个更简单的方法。 First you change the files sharing settings to 'Anyone with the link' then pull out the file ID and paste here: https://drive.google.com/uc?id=FILEID .首先,您将文件共享设置更改为“知道链接的任何人”,然后提取文件 ID 并粘贴到此处: https://drive.google.com/uc?id=FILEID And place the link to html code.并放置 html 代码的链接。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM