31

我想知道是否有任何选项可以更改使用 MailApp.sendEmail 发送的电子邮件的 FROM 地址。

我已经构建了一个作为 Web 应用程序发布的表单。学生填写并提交表格,并收到一封电子邮件。我知道如何更改电子邮件的回复地址和发件人姓名。我知道电子邮件使用我的地址作为发件人地址,因为我是脚本的所有者并且应用程序以我的身份运行。

有没有办法将发件人地址设置为属于另一个人,在这种情况下,是教师?我假设实现此目的的一种方法是让他成为脚本所有者并引导他为我们重新发布应用程序,但我宁愿不把它交给他。(据我所知,只有脚本所有者才能发布脚本。)

换句话说,我希望 From 地址代表正在为其创建脚本的客户端,而不是编写它的程序员。

我知道允许脚本从任何人那里发送电子邮件并不是一个理想的功能。我只是想知道是否有人对如何解决我的问题有建议。

谢谢!

4

7 回答 7

20

如果您使用 GMailApp.sendMail(而不是 MailApp.sendEmail),您可以指定 from 作为可选附加参数: https://developers.google.com/apps-script/reference/gmail/gmail-app#sendEmail(String,字符串,字符串,对象)

我相信您只能指定已配置 Gmail 帐户的别名。

于 2013-10-28T16:58:32.627 回答
13

Google 在这方面并不灵活 - 您可以看到的唯一“发件人”地址是属于有权运行脚本的用户的地址。

您可以使用“机器人”谷歌帐户,而不是作为“程序员”运行,例如DepartmentRobot@ourdomain.com. 您可以自己开发脚本,然后从机器人重新发布它们。

如果需要,您的管理员可以在 Google Apps 域中创建此伪用户并编辑设置以将其隐藏在 Google Apps 目录中。

学生收到的电子邮件不会来自他们的讲师,但也不会来自您。

于 2012-12-14T21:16:06.083 回答
12

是的,你可以,而且很容易。如果您有多个别名,请使用日志确定您的别名在数组中的哪个位置。然后测试你有正确的阵列位置在日志中使用。

var aliases = GmailApp.getAliases()
Logger.log(aliases); //returns the list of aliases you own
Logger.log(aliases[0]); //returns the alias located at position 0 of the aliases array

GmailApp.sendEmail('person@aol.com','From an alias', 'A message from an alias!', {'from': aliases[0]});
于 2014-02-14T20:58:19.373 回答
4

仅当您向要从中发送邮件的帐户添加别名时才有可能。

重要:别名应手动添加所需帐户(在 Gmail 中转到“设置”,然后“帐户”,然后“发送为”)

当你这样做时,你必须在你的脚本中使用 GmailApp 方法,称为“GmailApp.SendEmail()”

首先,您必须从 Gmail 帐户中读取别名:

var myAliases = GmailApp.getAliases(); 假设您只有一个别名,所以第一个别名将在索引 0 中 ->myAliases[0] 在这种情况下,您可以使用如下方法:

GmailApp.sendEmail('recipient@yourdomain.con', 'subject', 'body', {from: myAliases[0], name:'Name of the Alias'});

就是这样。

于 2018-12-03T11:02:29.587 回答
1

为了进一步构建 @RAWdaMedia 和 @mickolasjae 的答案,如果您想使用别名电子邮件发送 html 电子邮件,您可以这样做。

// this should contain data to be put in the variable in your html
var data = [data1, data2];
var html = HtmlService.createTemplateFromFile('your-html-file-name');

html.data = data;
var template = html.evaluate().getContent();

var subjectLine = "Your subject line";
var aliases = GmailApp.getAliases()

// this line sends the email using alias email
GmailApp.sendEmail(email, subjectLine, template, {from: aliases[0], htmlBody: template});

需要注意的几点:

  1. 在您的 Gmail 设置中,确保您要使用的电子邮件别名未标记为默认
  2. 如果您有多个,请检查您要使用的电子邮件别名的索引并aliases相应地更改索引,因此它可能是aliases[1]aliases[2]
于 2019-12-18T14:49:32.237 回答
1

我不确定,但我认为这可能对您的问题有用。我已经寻找了几个小时的解决方案,一个完全陌生的人可以代表你发送邮件,但通过谷歌脚本但它没有用。

虽然您可以更改代码并将整个代码放入 if 循环中,如果特定工作表的特定单元格具有特定单词,您的程序将运行或退出。

如果程序最后运行它,您可以输入命令清除该单元格。

然后您可以指示用户将 Sheet1 的 A1 设置为“发送”并行设置时间驱动触发器以每分钟运行一次。

因此,在提交的一分钟内,您将收到来自您的 ID 的邮件,并猜猜这个人甚至不需要登录谷歌帐户!

您可以要求用户在工作表的右上角检查其他人是否在线。如果是这种情况,他们可以稍后再回来。方法有点粗糙,但它有效。

我是新来的。只是想提供帮助

于 2020-09-08T12:20:12.807 回答
0

我想在上面 chrisb 的答案的基础上再接再厉,但我还不能发表评论......

正如克里斯布所说:

  1. 在您的帐户中为表单创建一个别名。
  2. 使用 Gmail.App “从”您创建的别名发送电子邮件。

然后编写 Google Apps 脚本来处理发送到该别名的电子邮件,以便教师的电子邮件出现在您的收件箱中,但来自其他任何人的电子邮件会转发给教师,并将“回复”字段设置为发送电子邮件的人。

于 2018-01-03T02:11:12.103 回答