gmail-reader
Version:
A Gmail reader package for Google Workspace accounts with domain-wide delegation support
98 lines (97 loc) • 3.38 kB
TypeScript
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>;
}