Вы используете Basic Auth. По сути, вы делаете первоначальный запрос, сервер отвечает 401, а затем отправляете пароль обратно в base64 (в данном случае через HTTPS).
Обратите внимание, что:
- Фид позволяет только получать тривиальную информацию об учетной записи (например, новую почту). Он не позволяет отправлять сообщения.
- POP также не может использоваться для отправки сообщений.
- Обычно используется SMTP, и это действительно не так сложно.
РЕДАКТИРОВАТЬ: Вот пример для проверки подлинности и загрузки канала Atom в XmlDocument. Обратите внимание, что это только предоставит доступ для чтения. Поиск или задать другой вопрос для получения информации о C # и SMTP. Хлам ICertificatePolicy был необходим мне, поскольку Моно не нравился сертификат Google. Это быстрый обходной путь, не подходящий для производства.
Хорошо, поскольку вы пояснили, что на самом деле читаете почту (а другой компонент отправляет ее), я рекомендую вам использовать 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);
}
}