Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用sendEmail时是否可以更改发件人地址?_Google Apps Script - Fatal编程技术网

Google apps script 使用sendEmail时是否可以更改发件人地址?

Google apps script 使用sendEmail时是否可以更改发件人地址?,google-apps-script,Google Apps Script,我想知道是否有任何选项可以更改使用MailApp.sendEmail发送的电子邮件的发件人地址 我构建了一个发布为Web应用程序的表单。学生填写并提交表格,并收到电子邮件。我知道如何更改电子邮件的回复地址和发件人姓名。我知道电子邮件使用我的地址作为发件人地址,因为我是脚本的所有者,应用程序以我的身份运行 是否有任何方法将发件人地址设置为属于另一个人(在本例中为讲师)?我认为实现这一点的一种方法是让他成为脚本所有者,并指导他为我们重新发布应用程序,但我不想把它交给他。(据我所见,只有脚本所有者才能

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

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

是否有任何方法将发件人地址设置为属于另一个人(在本例中为讲师)?我认为实现这一点的一种方法是让他成为脚本所有者,并指导他为我们重新发布应用程序,但我不想把它交给他。(据我所见,只有脚本所有者才能发布脚本。)

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

我明白,允许脚本发送来自太阳下任何人的电子邮件不是一个理想的功能。我只是想知道是否有人对如何解决我的问题有建议


谢谢

谷歌在这一点上并不灵活-你能看到的唯一“发件人”地址是属于运行脚本的用户的地址

你可以使用一个“机器人”谷歌账户,比如
DepartmentRobot@ourdomain.com
。您可以自己开发脚本,然后从robot重新发布它们

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


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

如果您使用GMailApp.sendMail(而不是MailApp.sendMail),则可以指定发件人作为可选的附加参数:


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

是的,你可以,而且很简单。如果您有多个别名,请使用日志确定您的别名在阵列中的位置。然后,要测试您是否具有正确的阵列位置,请在日志中使用它

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]});
我想在此基础上再接再厉,但我还不能发表评论

正如克里斯布所说:

  • 在您的帐户中仅为表单创建allias
  • 使用Gmail.App从您创建的别名发送电子邮件

  • 然后编写Google Apps脚本来处理发送到该别名的电子邮件,这样来自讲师的电子邮件会显示在您的收件箱中,而来自其他任何人的电子邮件会被转发到讲师,并且“replyTo”字段设置为发送电子邮件的人。

    只有在您将别名添加到您想要发送邮件的帐户中时才有可能

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

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

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

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

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

    就是这样。

    为了进一步利用@RAWdaMedia和@mickolasjae answers,如果您想使用别名电子邮件发送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});
    
    需要注意的几点:

  • 在Gmail设置中,确保您要使用的电子邮件别名未标记为默认别名
  • 如果您有多个电子邮件别名,请检查要使用的电子邮件别名的索引,并相应地更改
    别名的索引,因此它可能是
    别名[1]
    别名[2]

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

    尽管您可以更改代码并将整个代码放入if循环,若特定工作表的特定单元格具有特定单词,则程序将运行或退出

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

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

    所以,在提交一分钟后,您将收到来自您的ID的邮件,猜猜这一次该用户甚至不需要登录google帐户

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


    我是新来的。您可以通过使用{from:'来使用设置为运行脚本的帐户别名的任何电子邮件otheremail@example.com'}在可选参数中。这并不能解决这里要求的用例,但很高兴知道。
    {from:'我的-aliases@host.com“}
    对我没有任何影响,也没有记录在:-(你能澄清一下“重新发布”是什么意思吗?”robot帐户中的脚本?只是澄清一下:要使用'from:'参数,您必须使用GmailApp.sendEmail.MailApp.sendEmail。工作表的所有者还必须在GMail的设置屏幕中手动添加您要用作别名的电子邮件地址。请求是“从其他人发送的”,别名不是另一个人。这不是一个有效的答案。如果用户计划以另一个人的身份发送电子邮件,我假设他们会授予他们别名权限。你能确认这是否有效吗?我有一个合法的别名设置,尽管在“发件人”字段中使用了该设置,但它仍然来自我的主帐户。当你单击“答复”时,它是否会通过我的主帐户发送使用正确/预期的地址填充字段?仅因为我将replyTo:字段设置为(似乎确实有效:-),我才能确认该工作