C# Gmail Api返回错误503服务不可用

C# Gmail Api返回错误503服务不可用,c#,gmail,gmail-api,e2e-testing,C#,Gmail,Gmail Api,E2e Testing,我得到了从我的帐户中获取电子邮件的代码。这在我们的一个自动化过程中起作用。但是使用另一个帐户时,我收到一个服务不可用错误 private static GmailService GetGmailService() { string credPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); UserCredential credential;

我得到了从我的帐户中获取电子邮件的代码。这在我们的一个自动化过程中起作用。但是使用另一个帐户时,我收到一个服务不可用错误

    private static GmailService GetGmailService()
    {
        string credPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
        UserCredential credential;
        using (var stream =
            new FileStream(Path.Combine(credPath, "credentials.json"), FileMode.Open, FileAccess.Read))
        {
            var path = System.Environment.GetFolderPath(
              System.Environment.SpecialFolder.Personal);
            var credPath2 = Path.Combine(path, ".credentials/gmail-dotnet-quickstart.json");

            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                Scopes,
                "user",
                CancellationToken.None,
                new FileDataStore(credPath2, true)).Result;
        }

        var service = new GmailService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = ApplicationName,

        });
        return service;
    }


    public static string GetRegistrationLink(string devEmail, string toEmail, string subjectSearch = "", string keywords = "")
    {
        var url = string.Empty;
        var service = GetGmailService();
        var inboxlistRequest = service.Users.Messages.List(devEmail);
        inboxlistRequest.LabelIds = "INBOX";

        var query = @"in:unread in:inbox subject:Reset your CS Professional Suite Web account password";
        //@"in:unread ";
        //if (!string.IsNullOrEmpty(subjectSearch))
        //    query += $"subject:{subjectSearch} ";
        //if (!string.IsNullOrEmpty(toEmail))
        //    query += $"to:{toEmail} ";
        //if (!string.IsNullOrEmpty(keywords))
        //    query += $@"{keywords}";

        //inboxlistRequest.Q = query;
        inboxlistRequest.IncludeSpamTrash = false;

        //get our emails
        var emailListResponse = inboxlistRequest.Execute();
        if (emailListResponse != null && emailListResponse.Messages != null)
        {
            //loop through each email and get what fields you want... 
            foreach (var email in emailListResponse.Messages)
            {
                var emailInfoRequest = service.Users.Messages.Get(devEmail, email.Id);
                var emailInfoResponse = emailInfoRequest.Execute();
                if (emailInfoResponse == null) continue;
                var from = "";
                var date = "";
                foreach (var mParts in emailInfoResponse.Payload.Headers)
                {
                    switch (mParts.Name)
                    {
                        case "Date":
                            date = mParts.Value;
                            break;
                        case "From":
                            @from = mParts.Value;
                            break;

                    }

                    if (date == "" || @from == "") continue;
                    var messageBodyParts = emailInfoResponse.Payload?.Parts?.SelectMany(a => a.Parts).ToList();
                    if (messageBodyParts == null) continue;
                    foreach (var p in messageBodyParts)
                    {
                        if (p.MimeType != "text/html") continue;
                        byte[] data = FromBase64ForUrlString(p.Body.Data);
                        var decodedString = Encoding.UTF8.GetString(data);
                        url = Regex.Match(decodedString, "href\\s*=\\s*\"(?<url>.*?)\"").Groups["url"].Value;
                    }
                }
            }

        }
        return url;
    }
private静态Gmail服务getGmail服务()
{
字符串credPath=Path.GetDirectoryName(Assembly.getExecutionGassembly().Location);
用户凭证;
使用(var)流=
新的文件流(Path.Combine(credPath,“credentials.json”)、FileMode.Open、FileAccess.Read)
{
var path=System.Environment.GetFolderPath(
系统、环境、专用文件夹、个人);
var credPath2=Path.Combine(路径“.credentials/gmail dotnet quickstart.json”);
凭证=GoogleWebAuthorizationBroker.AuthorizationAsync(
GoogleClientSecrets.Load(stream.Secrets),
范围,
“用户”,
取消令牌。无,
新文件数据存储(credPath2,true))。结果;
}
var service=new-GmailService(new-BaseClientService.Initializer()
{
HttpClientInitializer=凭证,
ApplicationName=ApplicationName,
});
回程服务;
}
公共静态字符串GetRegistrationLink(字符串devEmail、字符串toEmail、字符串subjectSearch=“”、字符串关键字=“”)
{
var url=string.Empty;
var service=GetGmailService();
var inboxlistRequest=service.Users.Messages.List(devEmail);
inboxlistRequest.LabelIds=“收件箱”;
var query=@“in:未读in:收件箱主题:重置您的CS Professional Suite Web帐户密码”;
//@“在:未读”;
//如果(!string.IsNullOrEmpty(subjectSearch))
//查询+=$“主题:{subjectSearch}”;
//如果(!string.IsNullOrEmpty(toEmail))
//查询+=$“收件人:{toEmail}”;
//如果(!string.IsNullOrEmpty(关键字))
//查询+=$@“{keywords}”;
//inboxlistRequest.Q=查询;
inboxlistRequest.IncludeSpamTrash=false;
//收到我们的电子邮件
var emailListResponse=inboxlistRequest.Execute();
if(emailListResponse!=null&&emailListResponse.Messages!=null)
{
//循环浏览每封电子邮件,获取您想要的字段。。。
foreach(emailListResponse.Messages中的var电子邮件)
{
var emailInfoRequest=service.Users.Messages.Get(devEmail,email.Id);
var emailInfoResponse=emailInfoRequest.Execute();
如果(emailInfoResponse==null)继续;
var from=“”;
var日期=”;
foreach(emailInfoResponse.Payload.Headers中的var mpart)
{
交换机(mpart.Name)
{
案件“日期”:
日期=mParts.Value;
打破
案例“来自”:
@from=mpart.Value;
打破
}
如果(日期==“”| |@from=“”)继续;
var messageBodyParts=emailInfoResponse.Payload?.Parts?.SelectMany(a=>a.Parts.ToList();
如果(messageBodyParts==null)继续;
foreach(messageBodyParts中的var p)
{
如果(p.MimeType!=“text/html”)继续;
byte[]data=FromBase64ForUrlString(p.Body.data);
var decodedString=Encoding.UTF8.GetString(数据);
url=Regex.Match(decodedString,“href\\s*=\\s*\”(?*?)\).Groups[“url”].Value;
}
}
}
}
返回url;
}

api已启用,并且凭据已包含在项目中,但返回503 service not available错误。但是,当我在控制台上运行相同的代码时,使用相同的凭据也可以正常工作。json

您发出了多少请求?这段代码看起来也很熟悉:)只有一个请求。调试过程中不超过5个请求不,您不仅仅提出一个请求;你赚了很多钱
foreach(emailListResponse.Messages中的var email)
在您的内部,您正在根据
Messages
对象(
emailInfoRequest.Execute();
)发出许多请求。你知道那个密码在做什么吗?我相信不知道。这些是来自单个请求的消息。获取信息。我在看仪表盘。当代码在其他项目和控制台应用程序上运行时,又如何解释呢。你能解释一下你从哪里得到的代码吗?