Gmail AutoAuth MCP Server
by GongRzhe
/**
* Helper function to encode email headers containing non-ASCII characters
* according to RFC 2047 MIME specification
*/
function encodeEmailHeader(text: string): string {
// Only encode if the text contains non-ASCII characters
if (/[^\x00-\x7F]/.test(text)) {
// Use MIME Words encoding (RFC 2047)
return '=?UTF-8?B?' + Buffer.from(text).toString('base64') + '?=';
}
return text;
}
export const validateEmail = (email: string): boolean => {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
};
export function createEmailMessage(validatedArgs: any): string {
const encodedSubject = encodeEmailHeader(validatedArgs.subject);
(validatedArgs.to as string[]).forEach(email => {
if (!validateEmail(email)) {
throw new Error(`Recipient email address is invalid: ${email}`);
}
});
const emailParts = [
'From: me',
`To: ${validatedArgs.to.join(', ')}`,
validatedArgs.cc ? `Cc: ${validatedArgs.cc.join(', ')}` : '',
validatedArgs.bcc ? `Bcc: ${validatedArgs.bcc.join(', ')}` : '',
`Subject: ${encodedSubject}`,
'MIME-Version: 1.0',
'Content-Type: text/plain; charset=UTF-8',
'Content-Transfer-Encoding: 7bit',
].filter(Boolean);
emailParts.push('')
emailParts.push(validatedArgs.body);
return emailParts.join('\r\n');
}