将徽标嵌入电子邮件

Embed logo into email

我想知道如何将徽标嵌入到电子邮件中。徽标保存在 Google 驱动器上。另外,我知道需要使用参考 inlineimage 和 blob,但我不知道如何使用。

我试过这段代码,但没有成功

var Img = DriveApp.getFileById(1pRBZ....cKMFll1OouC..er2V97e8...).getBlob();

下面的行检索消息模板。所以,我想将图像作为签名包含在消息中。

var TemplateTexte = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1, 1).getValue();

function EnvoiIDCourriel() {

  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Liste").activate();
  var SS = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var LR = SS.getLastRow()

  var TemplateTexte = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange(1, 1).getValue();
  //Permet d'utiliser le corps du courriel qui se trouve dans l'onglet Template


  //Logger.log(NomCandidat);

  //Cette ligne permet de passer à travers de toutes les lignes inscrites
  var values = SS.getRange("A2:E" + SS.getLastRow()).getValues();
  values.forEach(([check, NomCandidat, ID, CurrentEmail, Processus]) => {
    if (check === true) {
       var CorpsMessage = TemplateTexte.replace("{Nom}",NomCandidat).replace("{ID}",ID).replace("{Processus}",Processus);
       var ObjetCourriel = "Code d'identification: " + ID + " - Test en ligne";
    GmailApp.sendEmail(CurrentEmail, ObjetCourriel, CorpsMessage);
  }
});

}

我相信你的目标如下。

  • 您想使用内联图像向电子邮件添加徽标图像。
  • 徽标图像文件已放入您的 Google 驱动器中。

为此,这个答案怎么样?

修改点:

  • 为了将徽标图像添加到电子邮件中,需要使用 HTML 正文。
  • 在这种情况下,使用 sendEmail(recipient, subject, body, options)options

修改后的脚本:

当你的脚本修改后,变成如下。

从:
  var values = SS.getRange("A2:E" + SS.getLastRow()).getValues();
  values.forEach(([check, NomCandidat, ID, CurrentEmail, Processus]) => {
    if (check === true) {
       var CorpsMessage = TemplateTexte.replace("{Nom}",NomCandidat).replace("{ID}",ID).replace("{Processus}",Processus);
       var ObjetCourriel = "Code d'identification: " + ID + " - Test en ligne";
    GmailApp.sendEmail(CurrentEmail, ObjetCourriel, CorpsMessage);
  }
});
到:
var fileId = "###";  // Added: Please set the file ID of the logo image.
var blob = DriveApp.getFileById(fileId).getBlob();  // Added
var values = SS.getRange("A2:E" + SS.getLastRow()).getValues();
values.forEach(([check, NomCandidat, ID, CurrentEmail, Processus]) => {
  if (check === true) {
    var CorpsMessage = TemplateTexte.replace("{Nom}",NomCandidat).replace("{ID}",ID).replace("{Processus}",Processus);
    var ObjetCourriel = "Code d'identification: " + ID + " - Test en ligne";
    var html = CorpsMessage + '<BR><img src="cid:logo">';  // Added
    GmailApp.sendEmail(CurrentEmail, ObjetCourriel, CorpsMessage, {htmlBody: html, inlineImages: {logo: blob}});  // Modified
  }
});

到:

作为其他修改,这是使用HTML模板的方法。这样,您就可以将电子邮件的 HTML 正文准备为一个文件。

var fileId = "###";  // Added: Please set the file ID of the logo image.
var blob = DriveApp.getFileById(fileId).getBlob();  // Added
var values = SS.getRange("A2:E" + SS.getLastRow()).getValues();
values.forEach(([check, NomCandidat, ID, CurrentEmail, Processus]) => {
  if (check === true) {
    var CorpsMessage = TemplateTexte.replace("{Nom}",NomCandidat).replace("{ID}",ID).replace("{Processus}",Processus);
    var ObjetCourriel = "Code d'identification: " + ID + " - Test en ligne";
    var html = HtmlService.createTemplateFromFile("index");  // Added
    html.text = CorpsMessage;  // Added
    GmailApp.sendEmail(CurrentEmail, ObjetCourriel, CorpsMessage, {htmlBody: html.evaluate().getContent(), inlineImages: {logo: blob}});  // Added
  }
});

并且,请在脚本编辑器中创建一个HTML文件作为index.html的文件名,然后复制并粘贴以下内容HTML。

<!DOCTYPE html>
<html>
  <body>
    <?= text ?>
    <BR>
    <img src="cid:logo">
  </body>
</html>

注:

  • 在此修改后的脚本中,CorpsMessage + '<BR><img src="cid:logo">' 用作 HTML 正文。所以如果你想针对你的实际情况进行修改,请修改这里。
    • logo of cid:logo对应logo of inlineImages: {logo: blob}.
  • 如果电子邮件客户端无法读取HTML 电子邮件,则不会显示徽标。请注意这一点。

参考文献:

已添加:

  • 来自,您想使用如下电子邮件模板。

    Bonjour {Nom},
    
    Ceci est vorte code d'identification : {ID}
    
    Ce code devra être utillisé lors de votre examen en Iigne pour le processus : {Processus}.
    
    Bon succés !
    
    ---
    Equipe des tests en ligne
    
    Service des Ressources Humaines
    

为此,下面的修改怎么样?在这种情况下,请修改上述模板如下。

发件人:

Equipe des tests en ligne

收件人:

{LOGO}

在此修改中,{LOGO} 替换为徽标图像。

修改后的脚本:

请按如下方式修改您的脚本。

从:
  var values = SS.getRange("A2:E" + SS.getLastRow()).getValues();
  values.forEach(([check, NomCandidat, ID, CurrentEmail, Processus]) => {
    if (check === true) {
       var CorpsMessage = TemplateTexte.replace("{Nom}",NomCandidat).replace("{ID}",ID).replace("{Processus}",Processus);
       var ObjetCourriel = "Code d'identification: " + ID + " - Test en ligne";
    GmailApp.sendEmail(CurrentEmail, ObjetCourriel, CorpsMessage);
  }
});
到:
var fileId = "###";  // Added: Please set the file ID of the logo image.
var blob = DriveApp.getFileById(fileId).getBlob();  // Added
var values = SS.getRange("A2:E" + SS.getLastRow()).getValues();
values.forEach(([check, NomCandidat, ID, CurrentEmail, Processus]) => {
  if (check === true) {
    var CorpsMessage = TemplateTexte.replace("{Nom}",NomCandidat).replace("{ID}",ID).replace("{Processus}",Processus);
    var ObjetCourriel = "Code d'identification: " + ID + " - Test en ligne";
    var html = CorpsMessage.replace(/\n/g, '<br>').replace('{LOGO}', '<img src="cid:logo">');  // Added
    GmailApp.sendEmail(CurrentEmail, ObjetCourriel, CorpsMessage, {htmlBody: html, inlineImages: {logo: blob}});  // Modified
  }
});

要通过电子邮件发送来自您的 Google 驱动器的图像:
1.将图片文件设为分享到"Anyone with the link"
2. 从分享的link
复制图片ID 3. 在发送电子邮件的应用程序中,将此图像检索为 blob

var imageBlob = DriveApp
                  .getFileById(imageID)
                  .getBlob()
                  .setName("Logo"); 

要在电子邮件中包含图片,您需要使用 html 标签撰写电子邮件。 声明一个变量来保存 html 脚本。

var html = ""

以上变量将用于保存整个电子邮件的内容,使用 html 标记来保留格式。
如果不包含 html 标签,电子邮件可能无法在设备上正确显示。可能会出现段落、表格错位、图片无法显示等问题

html = '<body>' + 
html = html + '<p style="color:grey; font-family: Palatino, Times, serif; font-size: 16px;font-style: italic;">';
html = html + CorpsMessage + '</p>';
html = html + '<div align=' + imageAlignment +'><img src="cid:image" width=' + imageWidth + '%height='+ imageHeight + '% align=' + imageAlignment +'></div><br><br></body>';

然后您使用 GmailApp.sendEmail 或 MailApp.sendEmail 发送电子邮件:

try{
  MailApp.sendEmail(emailAddress, subject, '',{ 
  cc: emailCc,
  bcc: emailBcc,
  htmlBody: html,
  inlineImages:{image: imageBlob}});
  sheet.getRange("G28").setFontColor("#228B22");
  sheet.getRange("G28").setValue("Latest update: Mail sent @" + new Date());  
    }catch(e){
      sheet.getRange("G28").setFontColor("#FF0000")
      sheet.getRange("G28").setValue("Alert! Error: " + "  " + new Date() + "  " + e.message)
  }

始终将 sendEmail 方法包含在 try/catch 块中,如果由于任何原因即使在 1 条消息中也有错误,将不会发送错误消息之后的所有消息。这与电子邮件是简单文本格式还是 html 格式无关。

包含 try/catch 块可防止仅发送错误消息。只有正确的消息才会被发送。