2016-05-03 6 views
0

gibt es eine Möglichkeit für den Zugriff auf Google Mail per IMAP mit OAUTH2 Authentifizierung in asp.net C#?Wie kann auf Gmail Mail über IMAP mit OAuth2-Authentifizierung zugegriffen werden oder mithilfe von Gmail API in asp.net C# abgerufen werden?

mit Google API, ich bin in der Lage, die MessageID zu bekommen. Aber nicht in der Lage, die Einzelheiten dieser Nachricht abzuzurufen:

var gmailservice = new GmailService(new BaseClientService.Initializer() 
        { 
         HttpClientInitializer = credential, 
         ApplicationName = appName, 
        }); 
List<Message> objList = ListMessages(gmailservice, "me", AnyFromEmailAddress); 

foreach (Message objM in objList) 
{ 
    // I can retrieve objM.Id but how to get message detail? 
} 

Oder gibt es einen kostenlosen IMAP-Client, den OAuth2 verwendet für die Anmeldung wie Limilab des Mail.dll

+1

Nicht, dass ich weiß, ich habe für Limilabs-Komponente bezahlt, es funktioniert wie ein Champion. Es ist sehr günstig, wenn Sie an die Zeit denken, die Sie retten wird. Ich verwende ihre Komponente seit 2008. – Henry

+0

Haben Sie das Beispiel aus diesem [Link] (https://developers.google.com/gmail/api/quickstart/dotnet#step_3_set_up_the_sample) implementiert? –

+0

Entschuldigung für die späte Antwort, als ich an Fieber litt. Ja, ich habe diesen Link implementiert und der HTML-Code der E-Mail fehlt. –

Antwort

-1

Mit MailKit und OAuth2 Rahmen von Google aus NuGet, können Sie tun es ist wie folgt:

using (var client = new ImapClient()) { 
    client.Connect ("imap.gmail.com", 993, true); 

    var certificate = new X509Certificate2 (@"C:\path\to\certificate.p12", "password", X509KeyStorageFlags.Exportable); 
    var credential = new ServiceAccountCredential (new ServiceAccountCredential.Initializer ("you[email protected]") { 
     // Note: other scopes can be found here: https://developers.google.com/gmail/api/auth/scopes 
     Scopes = new[] { "https://mail.google.com/" }, 
     User = "[email protected]" 
    }.FromCertificate (certificate)); 

    // Note: result will be true if the access token was received successfully 
    bool result = await credential.RequestAccessTokenAsync (cancel.Token); 

    // use the access token as the password string 
    client.Authenticate ("[email protected]", credential.Token.AccessToken); 

    // ... 

    client.Disconnect (true); 
}