我的意思是得到一个List,它将像这样构建:
from to message
例如,在第一个索引的List中,我将看到:
来自:Daniel To: Jhon留言:hello world
在这段代码中,我现在使用的所有我得到的结果变量是1445条消息,这是奇怪的在我的gmail.com帐户,我看到我有374封电子邮件在收件箱,所以为什么变量结果返回所有的时间1445 ?我试图将JSON文件更改为我的gmail帐户,然后更改为我的朋友gmail帐户,在这两种情况下它都返回1445。我怎样才能使它根据JASON文件中的gmail帐户返回电子邮件的数量?
在结果列表变量中,例如在索引0上,当我站在鼠标上时,我所能得到的是消息Id和消息ThreadId,但我如何获得From和To以及消息主体/文本?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Google.Apis.Gmail.v1.Data;
using Google.Apis.Gmail.v1;
using Google.Apis.Gmail;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Services;
using Google.Apis.Upload;
using System.Threading;
using System.IO;
using Google.Apis.Util.Store;
namespace Google_Gmail
{
public partial class Form1 : Form
{
static string[] Scopes = { GmailService.Scope.GmailReadonly };
static string ApplicationName = "Youtube Uploader";
public Form1()
{
InitializeComponent();
ListMessages(GmailServices(), "me", "");
}
private GmailService GmailServices()
{
UserCredential credential;
using (var stream =
new FileStream(@"C:jason fileclient_secrets.json", FileMode.Open, FileAccess.Read))
{
string credPath = System.Environment.GetFolderPath(
System.Environment.SpecialFolder.Personal);
credPath = Path.Combine(credPath, ".credentials");
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
Scopes,
"user",
CancellationToken.None,
new FileDataStore(credPath, true)).Result;
Console.WriteLine("Credential file saved to: " + credPath);
}
// Create Gmail API service.
var service = new GmailService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
return service;
}
public static List<Google.Apis.Gmail.v1.Data.Message> ListMessages(GmailService service, String userId, String query)
{
List<Google.Apis.Gmail.v1.Data.Message> result = new List<Google.Apis.Gmail.v1.Data.Message>();
UsersResource.MessagesResource.ListRequest request = service.Users.Messages.List(userId);
request.Q = query;
do
{
try
{
ListMessagesResponse response = request.Execute();
result.AddRange(response.Messages);
request.PageToken = response.NextPageToken;
}
catch (Exception e)
{
Console.WriteLine("An error occurred: " + e.Message);
}
} while (!String.IsNullOrEmpty(request.PageToken));
return result;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
在我的gmail帐户中,我看到我的收件箱中有374封电子邮件变量结果一直返回1445?
Users.Messages.List(userId)
将返回您帐户中所有消息的Id,而不仅仅是带有inbox标签的消息。试试查询Q = "in:INBOX"
在结果列表变量内部,例如在索引0上,当i站着,鼠标在上面,我能得到的是消息Id和消息ThreadId,但我如何获得从和到和消息身体/文本吗?
Messages.List
只会给你消息的Id和它所属的线程。您需要使用Messages。获取每个Id的请求以获取实际消息。
然后,您必须查看消息的From
-header, To
-header和Body
以获得所需的信息。