使用sendEmail时可以更改发件人地址吗?

Car*_*rie 17 google-apps-script

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

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

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

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

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

谢谢!

chr*_*isb 14

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

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

  • 你能确认这有效吗?我有一个合法的别名设置,尽管在 from 字段中使用了它,它仍然来自我的主帐户。 (2认同)

Mog*_*dad 7

谷歌在这方面并不灵活 - 你可以看到的唯一"来自"地址属于权限正在运行脚本的用户.

您可以使用"机器人"Google帐户,而不是像"程序员"那样运行DepartmentRobot@ourdomain.com.您可以自己开发脚本,然后从机器人重新发布它们.

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

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

  • 只是为了澄清:要使用“from:”参数,您“必须”使用 GmailApp.sendEmail。MailApp.sendEmail 将不起作用。此外,工作表的所有者*必须*在 GMail 的设置屏幕中手动添加您想要用作别名的电子邮件地址。 (9认同)
  • 通过在可选参数中使用{from:'otheremail@example.com'},您实际上可以使用设置为运行脚本的帐户的别名的任何电子邮件.这并不能解决此处要求的用例,但很高兴知道. (4认同)
  • {{from:'one-of-my-aliases@host.com'}`对我没有任何影响,也未在https://developers.google.com/apps-script/reference/mail中进行记录/ mail-app :-( (2认同)
  • 您能否澄清从机器人帐户“重新发布”脚本的含义? (2认同)

mic*_*jae 6

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

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]});
Run Code Online (Sandbox Code Playgroud)

  • 请求是"从另一个人发送",别名不是另一个人.这不是一个有效的答案. (3认同)

kor*_*hix 6

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

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

当您执行此操作时,您必须在脚本中使用名为“GmailApp.SendEmail()”的 GmailApp 方法。

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

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

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

就是这样。