UNPKG

@gongrzhe/server-gmail-autoauth-mcp

Version:
38 lines (37 loc) 1.35 kB
/** * Helper function to encode email headers containing non-ASCII characters * according to RFC 2047 MIME specification */ function encodeEmailHeader(text) { // 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) => { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); }; export function createEmailMessage(validatedArgs) { const encodedSubject = encodeEmailHeader(validatedArgs.subject); validatedArgs.to.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'); }