【问题标题】:Exception: Failed to send email: No recipient, No idea what's wrong例外:发送电子邮件失败:没有收件人,不知道出了什么问题
【发布时间】:2021-02-25 19:15:07
【问题描述】:

所以基本上,我的 WebApp 直到昨天都运行良好。今天突然报这个错误。仍在向所有已填充的单元格发送电子邮件,并且在发送后最后给出此错误。 我编码这个

function sendMailfj() {
  var first = 0;
  var last = 1;
  var email = 2;
  var aliases = GmailApp.getAliases();
  //Logger.log(aliases[2]);

  var emailTemp = HtmlService.createTemplateFromFile("emailfj");

  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FJ");

  var data = ws.getRange("A2:C" + ws.getLastRow()).getValues();

  data.forEach(function(row){
    emailTemp.fn = row[first];
    emailTemp.ln = row[last];
    var htmlMessage = emailTemp.evaluate().getContent();
    GmailApp.sendEmail(
      row[email], 
      "Your Recent Shopping Experience with XYZ Jackets", 
      "Your email doesn't support HTML",
      {'from':aliases[2], name: "XYZ Jackets", htmlBody: htmlMessage}
      );

  });

}

任何帮助将不胜感激

console.log(row[email]) 里面 data.forEach() 是

电子邮件是正确的,我的应用程序可以将电子邮件发送到此地址或任何其他原始地址(如果有)。但是在发送电子邮件后,会产生错误

过了一会儿,就会发生这种情况

对不起,我不擅长 JS

【问题讨论】:

  • row[email] 存在明显问题。为什么不简单地在错误发生之前检查该变量的值是什么?例如,将console.log(row[email]) 放入data.forEach 并查看消息的执行日志。然后在此处编辑您的问题以包含该信息。
  • 嗯,您遇到了两个不同的错误?最后一个屏幕截图显示您的代码无法在(6 或 30 分钟)的配额时间内完成。这与 JS 无关。您的代码几乎是最佳的。问题与您要发送的电子邮件量有关。
  • 电子邮件量仅为每天 4 到 5 封电子邮件。根据 Google,我们的帐户有资格每天发送 100 封电子邮件
  • 只有一个错误。
  • 如果您在上一个屏幕截图中看到您共享的脚本执行时间超过 6 分钟。它从 2:22:57 开始,6 分钟后在 2:28:57 中断。这里不是关于邮件配额,是关于6分钟的时间配额限制。你有多少行?你认为它会延迟这个过程吗?因为如果您在 6 分钟内仅发送 5 封电子邮件,这意味着每封电子邮件脚本需要 1 分钟,根据您的代码,我无法理解为什么。

标签: javascript google-apps-script google-sheets


【解决方案1】:

根据您的评论,问题是填写了一些随机值,getLastRow 返回了错误的行。

您可以像这样根据您的电子邮件列确定最后一行:

function sendMailfj() {
  var first = 0;
  var last = 1;
  var email = 2;
  var aliases = GmailApp.getAliases();
  //Logger.log(aliases[2]);

  var emailTemp = HtmlService.createTemplateFromFile("emailfj");

  var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FJ");

  var Clast = ws.getRange("C1:C").getValues().filter(String).length; // new code
  
  var data = ws.getRange("A2:C" + Clast).getValues(); // modified code

  data.forEach(function(row){
    emailTemp.fn = row[first];
    emailTemp.ln = row[last];
    var htmlMessage = emailTemp.evaluate().getContent();
    GmailApp.sendEmail(
      row[email], 
      "Your Recent Shopping Experience with XYZ Jackets", 
      "Your email doesn't support HTML",
      {'from':aliases[2], name: "XYZ Jackets", htmlBody: htmlMessage}
      );

  });

}

【讨论】:

    猜你喜欢
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2017-05-03
    • 2022-06-27
    • 2015-02-18
    相关资源
    最近更新 更多