我在谷歌云平台上创建了一个项目,并为我的gmail帐户创建了一个OAuth服务帐户id。使用此服务帐户id,我无法阅读电子邮件,因为它说我无法访问此范围Gmail只读。
我通过谷歌搜索发现,我需要从Gsuite admin获得范围访问权限,但如果提供了访问权限,它表示可以使用该权限检索所有组织用户的电子邮件。这个信息正确吗?如果是的话,有没有其他方法可以访问我账户的电子邮件?
下面是我用来访问电子邮件的c#代码。如果有什么方法可以实现,请告诉我。
#region saggezza account id read
ServiceAccountCredential serviceAccountCredential = new ServiceAccountCredential(
new ServiceAccountCredential.Initializer("xxx@projectname.iam.gserviceaccount.com")
{
User = "xxx@organization.com",
Scopes = new[] { GmailService.Scope.GmailReadonly }
}.FromPrivateKey("-----BEGIN PRIVATE KEY-----xxxxxxxxxxxxxxxxx-----END PRIVATE KEY-----\n"));
if (serviceAccountCredential != null)
{
var service3 = new GmailService(new BaseClientService.Initializer
{
HttpClientInitializer = serviceAccountCredential,
ApplicationName = ApplicationName
});
var list = service3.Users.Messages.List("me").Execute();
var count = "Message Count is: " + list.Messages.Count();
}
你需要在谷歌开发者控制台上创建一个服务帐户,启用Gmail api。然后,在gsuite帐户开始工作之前,您需要正确地设置域范围的代理。代理设置
public static class ServiceAccountExample
{
/// <summary>
/// Authenticating to Google using a Service account
/// Documentation: https://developers.google.com/accounts/docs/OAuth2#serviceaccount
/// </summary>
/// <param name="serviceAccountEmail">From Google Developer console https://console.developers.google.com</param>
/// <param name="serviceAccountCredentialFilePath">Location of the .p12 or Json Service account key file downloaded from Google Developer console https://console.developers.google.com</param>
/// <returns>AnalyticsService used to make requests against the Analytics API</returns>
public static GmailService AuthenticateServiceAccount(string serviceAccountEmail, string serviceAccountCredentialFilePath, string[] scopes, string email)
{
try
{
if (string.IsNullOrEmpty(serviceAccountCredentialFilePath))
throw new Exception("Path to the service account credentials file is required.");
if (!File.Exists(serviceAccountCredentialFilePath))
throw new Exception("The service account credentials file does not exist at: " + serviceAccountCredentialFilePath);
if (string.IsNullOrEmpty(serviceAccountEmail))
throw new Exception("ServiceAccountEmail is required.");
// For Json file
if (Path.GetExtension(serviceAccountCredentialFilePath).ToLower() == ".json")
{
GoogleCredential credential;
using (var stream = new FileStream(serviceAccountCredentialFilePath, FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(scopes);
}
// Create the Analytics service.
return new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Gmail Service account Authentication Sample",
});
}
else if (Path.GetExtension(serviceAccountCredentialFilePath).ToLower() == ".p12")
{ // If its a P12 file
var certificate = new X509Certificate2(serviceAccountCredentialFilePath, "notasecret", X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.Exportable);
var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail)
{
user = email,
Scopes = scopes
}.FromCertificate(certificate));
// Create the Gmail service.
return new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = "Gmail Authentication Sample",
});
}
else
{
throw new Exception("Unsupported Service accounts credentials.");
}
}
catch (Exception ex)
{
throw new Exception("CreateServiceAccountGmailFailed", ex);
}
}
}
}
service3.Users.Messages.List(email).Execute();
me将是没有任何电子邮件的服务号。您需要使用一个用户。您需要提供您想访问的电子邮件用户的电子邮件地址。这也必须是gSuite域上的用户。
因此,我实际上是试图通过IMAP使用Node连接到Outlook/Exchange电子邮件帐户。 使用旧的Live Connect API,我可以使用OAuth2令牌(https://msdn.microsoft.com/en-us/windows/desktop/DN440163)执行IMAP命令。但这似乎对Exchange帐户不起作用,因为试图用这些帐户执行Oauth流只会带来一个错误“此Mi
如何专门为服务帐户而不是用户帐户启用API服务? 上下文:我正在使用一个Python脚本本地测试一个云函数(查询BQ,将结果转换为json,加入GCS bucket)。我可以用我自己的测试帐户来做这件事,在那里我能够启用服务,但是不确定我将如何为客户的服务帐户做这件事(或者客户如何着手做这件事)。我自己的服务账户是这样做的: 作为JSON获取服务帐户凭据 跟踪gcloud cloud SDK的安装
使用NodeEmailer,如何使用别名gmail帐户发送电子邮件?还是组google suite服务器帐户? 比如说: 我的真实帐户: 我将使用nodemailer通过我的别名帐户或组帐户发送消息。 我的别名帐户:< code > myaliascount @ domain . com 我的群帐户:< code > my group account @ domain . com 这可能吗?
我想授予服务帐户访问Google Secrets Manager中的秘密的权限。 我可以像这样获得这个秘密: 但是当我的服务号尝试相同的命令时,gCloud会发出以下错误: 错误:(gcloud.beta.secrets.versions.access)权限被拒绝:请求的身份验证范围不足。 主要问题是:我还需要做些什么来确保服务帐户可以访问该机密? 我已授予该服务帐户“roles/secretma
我正在尝试从应用程序发送电子邮件。 问题是Gmail不允许我进行身份验证,因为位置不寻常——当然,每个应用程序都安装在其他位置。 我的代码(使用Javax): 该代码在我的测试设备上运行良好,但在其他使用我的应用程序的设备上崩溃。 我得到的错误:javax.mail.身份验证失败异常:534-5.7.14请通过534-5.7.14您的网络浏览器登录,然后重试。534-5.7.14在534 5.7.
您可以通过此界面创建和管理域的电子邮件帐户。 您可以创建电子邮件地址,配置邮件客户端,更改密码以及直接访问您的Webmail。 创建电子邮件地址 要为您的域创建电子邮件地址,请按以下步骤操作 - Step 1 - 单击cPanel主页的“电子邮件”部分中的“ Email Accounts链接。 Step 2 - 在电子邮件帐户中,您会在顶部找到添加电子邮件帐户。 Step 3 - 添加您要创建的电