Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
Email 可以通过URL从谷歌发送邮件吗?_Email_Google Apps Script_Google Api_Gmail_Gmail Api - Fatal编程技术网

Email 可以通过URL从谷歌发送邮件吗?

Email 可以通过URL从谷歌发送邮件吗?,email,google-apps-script,google-api,gmail,gmail-api,Email,Google Apps Script,Google Api,Gmail,Gmail Api,我找不到任何有文档记录的方法来完成通过GMAIL API发送电子邮件,使用url(获取请求),类似这样: https://example_api/?action=send&to=someone@gmail.com&message=hello&auth_user=myuser@gmail.com&pass=xyz-app-pass 有什么想法或技巧来实现这一点吗?(因此,我可以使用普通密码或应用程序密码)。我相信您的目标如下 您想通过访问URL发送电子邮件,如h

我找不到任何有文档记录的方法来完成通过GMAIL API发送电子邮件,使用url(获取请求),类似这样:

https://example_api/?action=send&to=someone@gmail.com&message=hello&auth_user=myuser@gmail.com&pass=xyz-app-pass

有什么想法或技巧来实现这一点吗?(因此,我可以使用普通密码或应用程序密码)。

我相信您的目标如下

  • 您想通过访问URL发送电子邮件,如
    https://example_api/?action=send&to=someone@gmail.com&message=hello&auth\u用户=myuser@gmail.com&pass=xyz应用程序pass
    使用Gmail API
我认为你的目标可以通过使用GoogleApps脚本创建的Web应用来实现。在本例中,脚本可能是一个简单的脚本。因此,在这个答案中,我想建议使用Google Apps脚本创建的Web应用程序来实现您的目标

用法: 请执行以下流程

1.创建谷歌应用程序脚本的新项目。 Web应用程序的示例脚本是Google应用程序脚本。因此,请创建一个谷歌应用程序脚本项目

如果要直接创建,请访问。在这种情况下,如果您没有登录Google,则会打开登录屏幕。所以请登录谷歌。这样,谷歌应用程序脚本的脚本编辑器就打开了

2.准备脚本。 请将以下脚本(Google Apps脚本)复制并粘贴到脚本编辑器。此脚本用于Web应用程序

function doGet(e) {
  const allowedUsers = [
    {email: "myuser@gmail.com", password: "xyz-app-pass"},
    ,
    ,
    ,
  ];  // If you want to allow other users to use this script, please add other emails and passwords to the `allowedUsers` array;
  const subject = "sample subject";

  const {action, to, message, auth_user, pass} = e.parameter;
  if (action == "send" && allowedUsers.some(({email, password}) => email == auth_user && password == pass)) {
    MailApp.sendEmail({to: to, subject: subject, body: message});
    return HtmlService.createHtmlOutput("Email was sent.");
  }
  return HtmlService.createHtmlOutput("Email was not sent.");
}
3.部署Web应用程序。
  • 在脚本编辑器上,通过“发布”->“部署为web应用”打开对话框
  • 选择“用户访问web应用程序”以执行应用程序:“”。
    • 这样,脚本将作为访问Web应用程序的用户运行
  • 为有权访问应用程序的人选择“任何人”:
    • 在这种情况下,请使用浏览器访问Web应用程序。这样,当你登录谷歌时,网络应用程序就可以使用了
    • 而且,在这种设置中,当“用户A”通过登录谷歌访问网络应用时,“用户A”也可以使用自己的Gmail发送电子邮件。在这种情况下,请将“用户A”的
      {email:######,密码:####}
      添加到脚本中的
      allowedUsers
      。这样,只有注册用户才能发送电子邮件
    • 如果您不想与其他用户共享,请将
      执行应用程序设置为:Me
      谁有权访问该应用程序:仅限我自己
  • 单击“部署”按钮作为新的“项目版本”
  • 自动打开“需要授权”对话框。
  • 单击“查看权限”
  • 选择自己的帐户
  • 单击“此应用未验证”处的“高级”
  • 单击“转到####项目名称###(不安全)”
  • 单击“允许”按钮
  • 单击“确定”
  • 复制Web应用程序的URL。就像
    https://script.google.com/macros/s/###/exec
    • 当您修改Google Apps脚本时,请重新部署为新版本。这样,修改后的脚本将反映到Web应用程序中。请注意这一点。
  • 4.测试网络应用。 请使用浏览器通过包含以下查询参数访问Web应用的URL。当你已经登录谷歌,网络应用的脚本就会运行

    https://script.google.com/macros/s/###/exec?action=send&to=someone@gmail.com&message=hello&auth_user=myuser@gmail.com&pass=xyz-app-pass
    
    结果: 当运行上述脚本并且
    auth_user
    pass
    包含在
    allowedUsers
    中时,将发送
    电子邮件。
    返回

    注:
    • 修改Web应用脚本时,请将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。请注意这一点。
    • 如果要使用脚本和curl访问Web应用,则需要使用访问令牌访问它。在这种情况下,
      https://www.googleapis.com/auth/drive.file
      (在某些情况下,可能工作
      /drive
      /drive.readonly
    • GoogleApps脚本是一个简单的示例脚本,用于解释实现目标的方法。因此,请根据您的实际情况进行修改
    参考资料:

    OAuth2不是必须的吗?!出色的回答,远远超出我的预期!非常感谢。。。。正如我所看到的,如果仅从
    curl
    使用链接,那么发送方帐户(来自
    )似乎不可更改。在PHP中,可以使用API授权流,例如:
    。->AuthorizeAccount($\u GET['auth\u user'],$\u GET['pass'])
    @T.Todua感谢您的回复。我很高兴我的回答对你的情况有用。虽然我建议的答案是为实现目标确定方向的方法,但当你想扩展这一点时,我认为这可能是有用的。