Vous utilisez Basic Auth. Fondamentalement, vous faites une demande initiale, le serveur répond avec 401, puis vous renvoyez le mot de passe dans base64 (dans ce cas sur HTTPS).
Notez bien que:
- L'alimentation ne vous permet d'obtenir des informations triviales sur le compte (par exemple nouveau mail). Cela ne vous permet pas d'envoyer des messages. POP ne peut pas être utilisé pour envoyer des messages non plus.
- Habituellement SMTP est utilisé, et ce n'est vraiment pas si difficile.
EDIT: Voici un exemple d'authentification et de chargement du flux Atom dans un XmlDocument. Notez cependant que cela fournira seulement l'accès en lecture. Recherchez ou demandez une autre question pour plus d'informations sur C# et SMTP. L'indésirable ICertificatePolicy était nécessaire pour moi car Mono n'aimait pas le certificat de Google. C'est une solution de contournement rapide, pas adapté à la production.
D'accord, puisque vous avez précisé que vous lisez réellement mail (et un autre composant envoie), je vous recommande de faire utiliser POP. :
using System;
using System.Net;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using System.Xml;
public class GmailFeed
{
private class IgnoreBadCerts : ICertificatePolicy
{
public bool CheckValidationResult (ServicePoint sp,
X509Certificate certificate,
WebRequest request,
int error)
{
return true;
}
}
public static void Main(string[] argv)
{
if(argv.Length != 2)
{
Console.Error.WriteLine("Usage: GmailFeed username password");
Environment.ExitCode = 1;
return;
}
ServicePointManager.CertificatePolicy = new IgnoreBadCerts();
NetworkCredential cred = new NetworkCredential();
cred.UserName = argv[0];
cred.Password = argv[1];
WebRequest req = WebRequest.Create("https://gmail.google.com/gmail/feed/atom");
req.Credentials = cred;
Stream resp = req.GetResponse().GetResponseStream();
XmlReader reader = XmlReader.Create(resp);
XmlDocument doc = new XmlDocument();
doc.Load(reader);
}
}
Le code que j'ai écrit doit fonctionner idéalement, mais il semble y avoir un problème avec la méthode d'authentification de Google, je suppose. Ce gars semble avoir le même problème - http://objectmix.com/xml-soap/336644-problem-reading-gmail-atom-feed-net.html – Kirtan