【发布时间】:2020-12-19 11:28:27
【问题描述】:
我正在编写一个 C# 桌面应用程序,我想在其中阅读用户的所有电子邮件(除我的以外)。我已经在 GMail 控制台上创建了一个项目。当我阅读自己的电子邮件时,应用程序运行良好,但我无法阅读其他用户的电子邮件/消息。 GMail 文档中可用的示例代码读取所有者电子邮件 ID 的标签,但能够读取其他用户的标签(使用 GMail 电子邮件 ID/个人资料 ID)
UserCredential credential;
using (var stream = new FileStream("CredentialFile.json", FileMode.Open, FileAccess.Read))
{
// The file token.json stores the user's access and refresh tokens, and is created
// automatically when the authorization flow completes for the first time.
string credPath = "token.json";
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
logMe("Token : " + credential.Token.AccessToken);
// Create Gmail API service.
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
// Define parameters of request.
UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("XXXXXXXXXXXXXXXXXXXXX");
// List labels.
IList<Label> labels = request.Execute().Labels;
Console.WriteLine("Labels:");
if (labels != null && labels.Count > 0)
{
foreach (var labelItem in labels)
{
Console.WriteLine("{0}", labelItem.Name);
}
}
else
{
Console.WriteLine("No labels found.");
}
Console.Read();
【问题讨论】:
-
您需要使用其他人的凭据登录 gmail,因为出于非常明显的安全问题,您无法阅读其他人的电子邮件
-
但是根据 Google 文档,我们需要在 Google 控制台上验证我们的应用程序。然后我们就可以读取用户的邮件了。
标签: c# google-api google-oauth gmail-api google-api-dotnet-client