【发布时间】:2015-08-27 11:57:04
【问题描述】:
自 2009 年初以来,我的机构目前正在运行 Google Apps for Education。我负责创建、删除、修改等学生电子邮件帐户。我已将所有现有的 C# 应用程序从 GData 转换为新的 Admin SDK - 生活很美好。
上周,其中一个部门向大约 800 名学生发送了一封包含错误的电子邮件。有人问我是否可以创建一个能够删除 800 名学生收件箱的电子邮件的快速应用程序。
使用我的“超级管理员”域帐户,我能够使用 Gmail API 创建一个应用程序,以进入我的收件箱并选择符合特定条件的特定电子邮件;示例:from:xxxx@domain.edu AND is:unread AND subject:test 我能够返回一组消息 ID,然后我可以将它们从收件箱中删除——太棒了!
由于我能够在收件箱上执行此操作,我想我会进行另一次测试并插入这 800 个电子邮件地址中的一个并获得相同的结果。不幸的是,我收到了这条错误消息:
错误:Google.Apis.Requests.RequestError xxxxx@domain.edu 的委派被拒绝 [403] 错误 [消息[xxxxxx@domain.edu 的委托被拒绝]位置[-]原因[禁止]域[全局]]
我确实阅读了有关帐户委托的内容,但这需要从我的“超级管理员”帐户发送请求并且学生接受它。
会不会是域的“超级管理员”除了自己的收件箱外,对任何收件箱都没有这些权限?我已尝试阅读帖子和 Google 的文档,但似乎无法找到有关此主题的答案。
在此桌面应用程序的开发者控制台中启用了 Gmail API。
我使用的服务帐户已获得授权,并且在 C# 应用程序中使用了正确的范围:
Scopes = new[] {
"https://mail.google.com",
GmailService.Scope.GmailCompose,
GmailService.Scope.GmailInsert,
GmailService.Scope.GmailLabels,
GmailService.Scope.GmailModify,
GmailService.Scope.GmailReadonly,
GmailService.Scope.MailGoogleCom,
"https://www.googleapis.com/auth/userinfo.email",
"https://www.googleapis.com/auth/userinfo.profile"},
我的 C# 代码:
List<Google.Apis.Gmail.v1.Data.Message> result = new List<Google.Apis.Gmail.v1.Data.Message>();
UsersResource.MessagesResource.ListRequest request = GoogleToken.GoogleService().Users.Messages.List("xxxxx@domain.edu");
request.Q = " from:xxxx@domain.edu AND is:unread AND subject:test ";
do
{
try
{
ListMessagesResponse response = request.Execute();
result.AddRange(response.Messages);
request.PageToken = response.NextPageToken;
}
catch (Exception eX)
{
Debug.WriteLine("Error: " + eX.Message);
}
}
while (!String.IsNullOrEmpty(request.PageToken));
Debug.WriteLine("Done");
Debug.WriteLine(result);
}
【问题讨论】:
标签: google-api gmail-api google-api-dotnet-client