UNPKG

gmail-reader

Version:

A Gmail reader package for Google Workspace accounts with domain-wide delegation support

98 lines (97 loc) 3.38 kB
import { Email, EmailQueryOptions, EmailReadOptions, EmailListResponse, GmailClientConfig } from './types'; /** * Gmail client for reading emails from a workspace account * Supports domain-wide delegation for admin access */ export declare class GmailClient { private config; private options; private auth; private refreshToken?; private impersonateEmail?; private scopes; /** * Creates a new GmailClient instance * * @param config - Client configuration including clientId and clientSecret * @param refreshToken - OAuth2 refresh token (for user-level access) * @param options - Additional options */ constructor(config: GmailClientConfig, refreshToken?: string, options?: { impersonateEmail?: string; keyFile?: string; scopes?: string[]; }); /** * Set the refresh token for OAuth2 authentication * * @param refreshToken - OAuth2 refresh token */ setRefreshToken(refreshToken: string): void; /** * Set domain-wide delegation for impersonating a user * * @param email - Email address to impersonate * @param keyFile - Service account key file content */ setDomainWideDelegation(email: string, keyFile: string): void; /** * Authenticate with Google API * * @returns Promise resolving when authentication is complete */ authenticate(): Promise<void>; /** * List emails matching the given query options * * @param options - Query options for filtering emails * @returns Promise resolving to a list of emails */ listEmails(options?: EmailQueryOptions): Promise<EmailListResponse>; /** * Get a specific email by ID * * @param emailId - The ID of the email to retrieve * @param options - Options for retrieving the email * @returns Promise resolving to the email details */ getEmail(emailId: string, options?: EmailReadOptions): Promise<Email>; /** * Search for emails matching a query * * @param query - Search query string in Gmail query format * @param options - Additional query options * @returns Promise resolving to a list of emails */ searchEmails(query: string, options?: Omit<EmailQueryOptions, 'q'>): Promise<EmailListResponse>; /** * Get emails from a specific sender * * @param fromEmail - Email address of the sender * @param options - Additional query options * @returns Promise resolving to a list of emails */ getEmailsFrom(fromEmail: string, options?: Omit<EmailQueryOptions, 'q'>): Promise<EmailListResponse>; /** * Extract email body from message payload * * @param payload - Gmail message payload * @returns Object containing plain text and HTML body */ private extractEmailBody; /** * Extract attachments from message payload * * @param payload - Gmail message payload * @returns Array of email attachments */ private extractAttachments; /** * Get an attachment by ID * * @param messageId - ID of the email containing the attachment * @param attachmentId - ID of the attachment to retrieve * @returns Promise resolving to attachment data as a Buffer */ getAttachment(messageId: string, attachmentId: string): Promise<Buffer>; }