【问题标题】:google script for sending emails用于发送电子邮件的谷歌脚本
【发布时间】:2019-11-26 20:43:35
【问题描述】:

MailApp.sendEmail(emailAddress, 主题, 消息);

发送电子邮件。我们在两个域上工作,但在一个域上它不起作用。电子邮件退回,退回屏幕看起来一样,无论收件人如何,一个红灯亮着的红绿灯

消息被屏蔽 您发给 xyz@gmail.com 的消息已被阻止。有关更多信息,请参阅下面的技术细节。 了解更多

我怀疑它被谷歌屏蔽了。这可能与我们的帐户状态有关。手动发送的电子邮件可以正常发送。但是通过脚本发送的电子邮件不会,它们确实出现在已发送的框中,但随后几乎立即反弹回来。

有人知道如何解决这个问题吗?我们已经在 g 套件安全设置中允许安全性较低的应用程序,但这并没有解决问题。 g 套件访问权限是 squarespace 交易的一部分,因此不是直接从谷歌购买的。该帐户现在大约 2 个月大。

谢谢。

function sendEmails2() { 
  var EMAIL_SENT = "EMAIL_SENT"; 
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Press'); 
  var startRow = 2; 
  var numRows = 1; 
  var dataRange = sheet.getRange(startRow, 1, numRows, 100); 
  var data = dataRange.getValues(); 
  for (var i = 0; i < data.length; ++i) { 
    var row = data[i]; 
    var emailAddress = row[11]; 
    var have_email = row[12]; 
    var sendornot = row[16]; 
    var emailSent = row[17]; 
    if (emailSent != EMAIL_SENT && have_email == 1 && sendornot == 1) { 
      var subject = "Story Pitch"; 
      MailApp.sendEmail(emailAddress, subject, message, {'name':'Lisai'}); 
      sheet.getRange(startRow + i, 18).setValue(EMAIL_SENT); 
      SpreadsheetApp.flush(); 
    } 
  } 
}

【问题讨论】:

  • 我们最有帮助的方式是您给我们一些代码并告诉我们问题所在。我们获取代码并尝试验证我们是否看到相同的问题,然后我们尝试修复它。如果我们没有代码也无法访问您的环境,我们只能猜测问题可能是什么。有时我们可能会留下这样的消息,但大多数时候我们只是转移到另一个问题。
  • 函数 sendEmails2() { var EMAIL_SENT = "EMAIL_SENT"; var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Press');变量 startRow = 2; // 要处理的第一行数据 var numRows = 1; // 要处理的行数 // 获取单元格范围 var dataRange = sheet.getRange(startRow, 1, numRows, 100) // 获取 Range 中每一行的值。 var data = dataRange.getValues(); for (var i = 0; i
  • var have_email = row[12]; var sendornot = 行 [16]; var emailSent = row[17]; if (emailSent != EMAIL_SENT && have_email == 1 && sendornot == 1) { // 防止发送重复 var subject = "Story Pitch"; MailApp.sendEmail(emailAddress, subject, message, {'name':'Lisai'}); sheet.getRange(startRow + i, 18).setValue(EMAIL_SENT); // 确保单元格立即更新,以防脚本中断 SpreadsheetApp.flush(); } } }
  • 欢迎来到 StackOverFlow,请借此机会参加 tour 并学习如何使用 How to Askformat codeminimal reproducible example

标签: google-apps-script


【解决方案1】:

我只是做了一些小改动,但我认为这对我来说还不错。

function sendEmails2() { 
  var EMAIL_SENT = "EMAIL_SENT"; 
  var ss=SpreadsheetApp.getActive();
  var sheet=ss.getSheetByName('Press'); 
  var startRow=2; 
  var dataRange=sheet.getRange(startRow, 1, sh.getLastRow()-startrow + 1, sh.getLastColumn()); 
  var data=dataRange.getValues(); 
  for (var i=0;i<data.length;++i) { 
    var row=data[i]; 
    var emailAddress=row[11]; 
    var have_email=row[12]; 
    var sendornot=row[16]; 
    var emailSent=row[17]; 
    if (emailSent!=EMAIL_SENT && have_email==1 && sendornot==1) { 
      var subject= "Story Pitch"; 
      if(MailApp.getRemainingDailyQuota()<1) SpreadsheetApp.getUi().alert("Exceeded Daily Quota");
      MailApp.sendEmail(emailAddress, subject, message, {'name':'Lisai'}); 
      sheet.getRange(startRow + i, 18).setValue(EMAIL_SENT); 
      SpreadsheetApp.flush(); 
    } 
  } 
}

【讨论】:

  • 感谢库珀。好代码。完全相同的脚本在另外两个域上运行良好。它也确实在这个域上运行,除了电子邮件没有出去,看起来谷歌自己将它们退回。
  • 不知道是不是跟DailyQuota有关。用 Gmail 试试吧。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多