【问题标题】:MailApp.sendEmail Not Working?MailApp.sendEmail 不工作?
【发布时间】:2013-06-28 01:21:41
【问题描述】:

我在 Google Docs 电子表格中有几个脚本,它们使用 MailApp.sendEmail 发送包含电子表格数据的电子邮件。多年来,他们都工作得非常出色。大约 2 周前,他们停止发送电子邮件。脚本仍在运行,我没有收到任何错误。电子邮件永远不会通过。没有任何变化,只是电子邮件不再到达。

有什么想法吗?

谢谢!

【问题讨论】:

  • 我的意思是,我只是尝试了最基本的调试脚本:function myFunction() { MailApp.sendEmail("matt@******.com", "test", "test") } 而且 IT 也没有工作。
  • Google 有没有人在任何地方确认过这一点?我们正在尝试从 Google 电子表格脚本发送电子邮件,但它不起作用...

标签: google-apps-script google-docs


【解决方案1】:

我想我对自己的问题有一个答案,这可能对遇到此问题的其他人有所帮助。 MailApp.sendEmail 确实似乎仍在工作。改变的是 Gmail 处理特定类型邮件的方式。

如果我使用 MailApp.sendEmail 向第三方发送电子邮件,它会通过,没问题。正如 Fashtas 所指出的,如果我使用 MailApp.sendEmail 向电子表格所属的 Gmail 帐户发送电子邮件,没问题。

问题是:如果我使用 MailApp.sendEmail 将邮件发送到第三方帐户,该帐户会自动转发回电子表格所属的 Gmail 帐户,这些邮件将无法通过。

因此,在我上面发布的示例代码中,matt@.com 电子邮件地址会自动转发回我的 Gmail 帐户。 MailApp.sendEmail 发送的邮件通过 .com 邮件服务器,但由于某种原因,它们没有转发回我的 Gmail 收件箱。它们出现在 Gmail 已发送邮件文件夹中(可能是因为它们是由电子表格所属的 Gmail 帐户发送的),但它们从未进入收件箱。

这种行为是新的。过去,这些邮件从 *.com 服务器转发到我的 Gmail 收件箱没有任何问题。我不知道是什么改变导致了这个问题。而且我不知道如何解决它。

因此,我认为我的问题的答案是 MailApp.sendEmail 正在按设计工作。

【讨论】:

  • 啊,真烦人。我有一张很大的表格,上面写着我们的学生管理,偶尔会向学生发送有关他们项目的提醒。但是,碰巧我们的大多数学生都将这些帐户转发到了 gmail 帐户。我想知道为什么我从来没有收到回复...
  • 您的所有电子邮件都有可能确实通过了!检查列表中除您自己以外的其他收件箱。正常行为,当您将自己发送到列表时(在 gmail 上,即 team@comany.io),您不会收到副本,因为您是该电子邮件的作者。旧的脚本行为可能存在错误,而固定版本,因为它作为脚本所有者(您的帐户)发送邮件,实际上按预期工作。因此,在列表之后附加您自己的电子邮件应该是可接受的答案(如果希望将副本发送给您自己)。明天可以在工作中测试这个理论。
  • GmailApp 和 MailApp 都有类似的问题。不同的是,通过 MailApp 它有时甚至不会发送到我自己的电子邮件,而使用 GmailApp 它会发送到我自己的但并不总是发送到其他 gmail 帐户。如何解决?
  • 这很令人沮丧。我的银行也有类似的问题
【解决方案2】:

正如 doebtown 所解释的,MailApp.sendEmail() 将拒绝向任何转发到您帐户的地址发送消息。例如,如果您(电子表格的所有者)属于您组织内的组 people@myorg.com,则 mailApp.sendEmail() 消息将不会发送到 people@myorg.com。也就是下面的代码不会发送:

var email = 'people@myorg.com';

var subject = 'The Week Ahead';

var body = 'Hi there!';

var htmlbody = "<p>Hi there!</p>";

// this will not send
MailApp.sendEmail(email, subject, body,{
  htmlBody : htmlbody
});

但是,您可以通过将电子邮件附加到地址来解决此问题。

var email = 'myaddress@myorg.com, people@myorg.com';

var subject = 'The Week Ahead';

var body = 'Hi there!';

var htmlbody = "<p>Hi there!</p>";

// this will send to your address and the full list
MailApp.sendEmail(email, subject, body,{
  htmlBody : htmlbody
});

这封电子邮件将发送到您的地址以及您所属的列表。这不是一个完美的解决方案,但如果您不想创建用于管理脚本的特定帐户,这是可行的。

【讨论】:

  • 任何人都可以确认这确实会向列表(以及属于列表中的电子邮件)发送电子邮件以及您自己的电子邮件吗?我是我所针对的列表的成员,并且只收到 1 封电子邮件。如果此代码确实有效,我希望得到 2,因为我应该从 gmail 列表中获得一份副本,并直接向我发送一份副本......
  • 这将继续适用于我们所有的自动化。您应该在收件箱中看到一个包含两个收件人地址的电子邮件线程,myaddress@myorg.com, people@myorg.com,就像您通过 gmail 向自己和该列表发送电子邮件一样。您是否正在使用会发送给您但在将组添加到 to 列表时失败的最小模型?
  • 我刚刚确认这篇文章中的 mwm 在新脚本中仍然有效。如果这是一个可能的问题,我可以使用我们的别名域名使其失败。
【解决方案3】:

您显然只能向电子表格所属的 gmail/电子邮件帐户发送电子邮件。

【讨论】:

  • 什么?从何时起?!你能给我指出一些关于这个问题的文档吗?
  • 没有文档,但是我测试了它,我的 gmail 地址是唯一有效的
  • 在stackoverflow上有这条消息:(stackoverflow.com/questions/15697291/…)
  • 嗯。你认为这是一个BUG?或者他们改变了功能以避免垃圾邮件或类似的东西?
  • 这一定是一个错误。我有一个脚本也在起作用。它实际上也会在不应该的时候向我发送电子邮件。发生了非常奇怪的事情。
【解决方案4】:

有多种方法可以通过 Google 应用脚本发送电子邮件。

  • MailApp:传统方法,但是我无法发送一封电子邮件。入门课程here.

  • GmailApp:与 MailApp 相同的方法,但使用以下代码可以发送电子邮件。

    GmailApp.sendEmail(emailList[index], "New email", "New email", {"cc":"XXXXXXX@gmail.com"});

  • 通过服务添加 Gmail API。未探索此选项,但可以在 here 找到文档。

结论:不要使用MailApp,而是使用GmailApp。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多