我以前使用Gmail Atom Feed为我的PowerShell脚本提取电子邮件,但由于不再支持以前的API并且发布了新的Gmail API,我想知道是否可以为此编写等效的脚本新的Gmail API。
我以前的剧本
$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential ("gmailemail", "pass")
[xml]$xml= $webclient.DownloadString("https://mail.google.com/mail/feed/atom")
如何为新的gmail api编写新脚本,我没有看到任何powershell示例,但我想我可以使用get方法对电子邮件进行REST调用。但我不知道如何连接。
使用新的Gmail API是否支持PowerShell。
我已经为gmail api设置了我的客户端ID,我想使用Users.message的get方法来获取特定的电子邮件。
https://developers.google.com/gmail/api/v1/reference/users/messages/get
尝试#1
$data = Invoke-RestMethod -Method Get -Uri "https://www.googleapis.com/gmail/v1/users/myemail%40gmail.com/profile?key=client-id"
我试过,它在powershell中给了我错误
Invoke-RestMethod : The remote server returned an error: (401) Unauthorized.
在浏览器中,它给了我错误
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
尝试2
$headers = @{}
$headers.Add("Authorization", "Basic myemail@gmail.com pass")
$data = Invoke-RestMethod -Method Get -Headers $headers -Uri "https://www.googleapis.com/gmail/v1/users/myemail%40gmail.com/profile?key=client_id"
echo $data
错误
Invoke-RestMethod : The remote server returned an error: (403) Forbidden.
答案 0 :(得分:0)
Function Get-SubjectLine
{
#Acquires access token.
$accessToken = {accessToken};
#Acquires most recent message ID using access token.
$messageIDjson = Invoke-WebRequest -Uri "https://www.googleapis.com/gmail/v1/users/me/messages?access_token=$accessToken" -Method Get | ConvertFrom-Json;
#Converts JSON message and thread ids into string.
$messageID = ($messageIDjson | Out-String);
#Seperates string on first message ID, places messageID into $result.
$start = $messageID.indexOf("=") + 1;
$end = $messageID.indexOf(";", $start);
$length = $end - $start;
$result = $messageID.substring($start, $length);
#Acquires most recent message, using ID stored in result and access token.
$messages = Invoke-WebRequest -Uri ("https://www.googleapis.com/gmail/v1/users/me/messages/$result" + "?access_token=$accessToken") -Method Get | ConvertFrom-Json;
return $messages.snippet;
}
此函数返回用户收件箱中的最新邮件标题。您可以使用典型的XML / JSON结构并将代码段更改为您想要的任何内容。它具有与获取原子提要标题相同的功能。确保在使用之前获取刷新令牌和访问令牌,因为它无法访问Google API函数,除非它具有在过去一小时内获得的访问令牌,并且必须定期刷新访问令牌。
如果您想了解有关刷新令牌和访问令牌的更多信息,我建议您参考此earlier answer,因为Dalmto对GitHub上的答案进行了特别精确和详细的扩展。