标记为已读邮件方法

Kun*_*ark 5 gmail-api

如何使用Gmail API将邮件标记为已读?

我收到了电子邮件的帖子

Thread thread = service.users().threads().get(userId, message.getThreadId()).execute();
Run Code Online (Sandbox Code Playgroud)

但它没有像gmail API网站那样的方法markRead.

Eri*_*c D 9

使用threads.modify()或messages.modify()(取决于你想要做的范围)和removeLabelId"UNREAD".

https://developers.google.com/gmail/api/v1/reference/users/threads/modify


Ale*_*gli 6

在 nodejs 示例中:

var google = require('googleapis');
var gmail = google.gmail('v1');
var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);
oauth2Client.credentials = JSON.parse(token);
google.options({ auth: oauth2Client }); // set auth as a global default

gmail.users.messages.modify({
        'userId':'me',
        'id':emailId,
        'resource': {
            'addLabelIds':[],
            'removeLabelIds': ['UNREAD']
        }
    }, function(err) {
        if (err) {
            error('Failed to mark email as read! Error: '+err);
            return;
        }
        log('Successfully marked email as read', emailId);
    });
Run Code Online (Sandbox Code Playgroud)


The*_*tor 5

当我到达这里以在 C# 中寻找这个答案时,这里是我的经验答案:

var gs = new GmailService(
                new BaseClientService.Initializer()
                {
                    ApplicationName = gmailApplicationName,
                    HttpClientInitializer = credential
                }
            );
var markAsReadRequest = new ModifyThreadRequest {RemoveLabelIds = new[] {"UNREAD"}};
                            await gs.Users.Threads.Modify(markAsReadRequest, "me", unreadMessage.ThreadId)
                                    .ExecuteAsync();
Run Code Online (Sandbox Code Playgroud)