Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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 如何使用GMAIL API从Google应用程序脚本发送电子邮件?_Google Apps Script_Gmail Api - Fatal编程技术网

Google apps script 如何使用GMAIL API从Google应用程序脚本发送电子邮件?

Google apps script 如何使用GMAIL API从Google应用程序脚本发送电子邮件?,google-apps-script,gmail-api,Google Apps Script,Gmail Api,我正在尝试使用谷歌应用程序脚本中的Gmail API从我的帐户自动发送电子邮件 这是我的密码: function email_checker() { var yourEmailAddress = "###@gmail.com"; var myEmailAddress = "support@###.com"; var subject = "testing mail"; var forScope = GmailApp.get

我正在尝试使用谷歌应用程序脚本中的Gmail API从我的帐户自动发送电子邮件

这是我的密码:

function email_checker() {
  var yourEmailAddress = "###@gmail.com";
  var myEmailAddress = "support@###.com";
  var subject = "testing mail";
  var forScope = GmailApp.getInboxUnreadCount();
  var htmlBody = '<html><body>' + '<h1>HI</h1>' + '</body></html>';

  var message = 'From: Me <' + myEmailAddress + '>\r\n' +
    'To: Me <' + myEmailAddress + '>\r\n' +
    'Subject: ' + subject + '\r\n' +
    'Content-Type: text/html; charset=utf-8\r\n' +
    'Content-Transfer-Encoding: quoted-printable\r\n\r\n' +
    htmlBody;

  var draftBody = Utilities.base64Encode(message);
  draftBody = draftBody.replace(/\//g, '_').replace(/\+/g, '-');

  var params = {
    method: "post",
    contentType: "application/json",
    headers: {
      "Authorization": "Bearer " + ScriptApp.getOAuthToken()
    },
    muteHttpExceptions: true,
    payload: JSON.stringify({
      "message": {
        "raw": draftBody
      }
    })
  };

  var resp = UrlFetchApp.fetch("https://gmail.googleapis.com/upload/gmail/v1/users/me/messages/send", params);
  Logger.log(resp.getContentText());
}
功能电子邮件检查程序(){
var yourEmailAddress=“###@gmail.com”;
var myEmailAddress=“support@####com”;
var subject=“测试邮件”;
var forScope=GmailApp.getInboxUnderCount();
var htmlBody=''+'高'+'';
var message='From:Me\r\n'+
'收件人:我\r\n'+
'主题:'+Subject+'\r\n'+
'内容类型:text/html;charset=utf-8\r\n'+
'内容传输编码:带引号的可打印\r\n\r\n'+
htmlBody;
var draftBody=Utilities.base64Encode(消息);
draftBody=draftBody.replace(//\//g,''.''.')。replace(//\+/g,'-');
变量参数={
方法:“张贴”,
contentType:“应用程序/json”,
标题:{
“授权”:“承载者”+ScriptApp.getOAuthToken()
},
muteHttpExceptions:true,
有效负载:JSON.stringify({
“信息”:{
“原始”:牵引体
}
})
};
var resp=UrlFetchApp.fetch(“https://gmail.googleapis.com/upload/gmail/v1/users/me/messages/send“,参数);
Logger.log(resp.getContentText());
}
我收到以下错误:不支持媒体类型“application/json”

谁能告诉我我做错了什么


谢谢。

我相信你的目标和你目前的情况如下

  • 您想使用Gmail API和UrlFetchApp发送电子邮件
  • 您已经完成了发送电子邮件的设置。
    • Gmail API已启用
    • 可以包括发送电子邮件的范围
修改点:
  • 从endtpoint可以发现使用了媒体上载请求
  • 在这种情况下,,
    • 请求主体需要使用
      多部分/备选方案创建
    • 不需要将base64编码与web safe一起使用
    • 使用
      消息/rfc822
      需要内容类型
    • 创建的请求正文可直接用于
      有效负载
当上述各点反映到脚本中时,它将变成如下所示

修改脚本:
  •   var params = {
        method: "post",
        contentType: "application/json",
        headers: {
          "Authorization": "Bearer " + ScriptApp.getOAuthToken()
        },
        muteHttpExceptions: true,
        payload: JSON.stringify({"raw": draftBody})
      };
    
      var resp = UrlFetchApp.fetch("https://gmail.googleapis.com/gmail/v1/users/me/messages/send", params);
      Logger.log(resp.getContentText());
    
  • 在这种情况下,
    var draftBody=Utilities.base64Encode(消息);draftBody=draftBody.replace(//\//g,''.''.')。replace(//\+/g,'-')也可以修改为
    var draftBody=Utilities.base64EncodeWebSafe(message)

  • 参考:

      • 我相信你的目标和你目前的情况如下

        • 您想使用Gmail API和UrlFetchApp发送电子邮件
        • 您已经完成了发送电子邮件的设置。
          • Gmail API已启用
          • 可以包括发送电子邮件的范围
        修改点:
        • 从endtpoint可以发现使用了媒体上载请求
        • 在这种情况下,,
          • 请求主体需要使用
            多部分/备选方案创建
          • 不需要将base64编码与web safe一起使用
          • 使用
            消息/rfc822
            需要内容类型
          • 创建的请求正文可直接用于
            有效负载
        当上述各点反映到脚本中时,它将变成如下所示

        修改脚本:
      •   var params = {
            method: "post",
            contentType: "application/json",
            headers: {
              "Authorization": "Bearer " + ScriptApp.getOAuthToken()
            },
            muteHttpExceptions: true,
            payload: JSON.stringify({"raw": draftBody})
          };
        
          var resp = UrlFetchApp.fetch("https://gmail.googleapis.com/gmail/v1/users/me/messages/send", params);
          Logger.log(resp.getContentText());
        
      • 在这种情况下,
        var draftBody=Utilities.base64Encode(消息);draftBody=draftBody.replace(//\//g,''.''.')。replace(//\+/g,'-')也可以修改为
        var draftBody=Utilities.base64EncodeWebSafe(message)

    参考:

    您不使用内置应用程序脚本有什么特殊原因吗?@Diego是的,我需要从不同的地址发送电子邮件,而不是从触发脚本的用户的地址。您不使用内置应用程序脚本有什么特殊原因吗?@Diego是的,我需要从不同的地址发送电子邮件,而不是从触发脚本的用户的地址。
      var params = {
        method: "post",
        contentType: "application/json",
        headers: {
          "Authorization": "Bearer " + ScriptApp.getOAuthToken()
        },
        muteHttpExceptions: true,
        payload: JSON.stringify({"raw": draftBody})
      };
    
      var resp = UrlFetchApp.fetch("https://gmail.googleapis.com/gmail/v1/users/me/messages/send", params);
      Logger.log(resp.getContentText());