Skip to main content
Glama

sendHtmlMail

Send HTML-formatted emails with attachments using the Mail MCP server. Specify recipients, subject, HTML content, and optional CC/BCC fields to deliver rich email communications.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toYes
ccNo
bccNo
subjectYes
htmlYes
attachmentsNo

Implementation Reference

  • Registration of the 'sendHtmlMail' MCP tool. Includes Zod input schema and inline async handler that constructs MailInfo object and delegates to mailService.sendMail() for actual sending.
    this.server.tool( "sendHtmlMail", { to: z.string(), cc: z.string().optional(), bcc: z.string().optional(), subject: z.string(), html: z.string(), attachments: z.array( z.object({ filename: z.string(), content: z.union([z.string(), z.instanceof(Buffer)]), contentType: z.string().optional() }) ).optional() }, async (params) => { try { const mailInfo: MailInfo = { to: params.to, subject: params.subject, html: params.html }; if (params.cc) { mailInfo.cc = params.cc; } if (params.bcc) { mailInfo.bcc = params.bcc; } if (params.attachments) { mailInfo.attachments = params.attachments; } const result = await this.mailService.sendMail(mailInfo); if (result.success) { return { content: [ { type: "text", text: `HTML邮件发送成功,消息ID: ${result.messageId}\n\n提示:如果需要等待对方回复,可以使用 waitForReply 工具。` } ] }; } else { return { content: [ { type: "text", text: `HTML邮件发送失败: ${result.error}` } ] }; } } catch (error) { return { content: [ { type: "text", text: `发送HTML邮件时发生错误: ${error instanceof Error ? error.message : String(error)}` } ] }; } } );
  • The execution handler function for sendHtmlMail tool. Prepares email parameters, calls mailService.sendMail, and formats success/error text responses.
    async (params) => { try { const mailInfo: MailInfo = { to: params.to, subject: params.subject, html: params.html }; if (params.cc) { mailInfo.cc = params.cc; } if (params.bcc) { mailInfo.bcc = params.bcc; } if (params.attachments) { mailInfo.attachments = params.attachments; } const result = await this.mailService.sendMail(mailInfo); if (result.success) { return { content: [ { type: "text", text: `HTML邮件发送成功,消息ID: ${result.messageId}\n\n提示:如果需要等待对方回复,可以使用 waitForReply 工具。` } ] }; } else { return { content: [ { type: "text", text: `HTML邮件发送失败: ${result.error}` } ] }; } } catch (error) { return { content: [ { type: "text", text: `发送HTML邮件时发生错误: ${error instanceof Error ? error.message : String(error)}` } ] }; } }
  • MailInfo TypeScript interface defining the structure for email parameters, used by sendHtmlMail handler and sendMail helper.
    export interface MailInfo { to: string | string[]; cc?: string | string[]; bcc?: string | string[]; subject: string; text?: string; html?: string; attachments?: Array<{ filename: string; content: string | Buffer; contentType?: string; }>; }
  • Core helper method sendMail in MailService class. Uses nodemailer Transporter to send the actual email with HTML support, returns success/messageId or error.
    * 发送邮件 */ async sendMail(mailInfo: MailInfo): Promise<{ success: boolean; messageId?: string; error?: string }> { try { const mailOptions = { from: { name: this.config.defaults.fromName, address: this.config.defaults.fromEmail, }, to: mailInfo.to, cc: mailInfo.cc, bcc: mailInfo.bcc, subject: mailInfo.subject, text: mailInfo.text, html: mailInfo.html, attachments: mailInfo.attachments, }; const info = await this.smtpTransporter.sendMail(mailOptions); return { success: true, messageId: info.messageId }; } catch (error) { console.error('发送邮件错误:', error); return { success: false, error: error instanceof Error ? error.message : String(error) }; } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shuakami/mcp-mail'

If you have feedback or need assistance with the MCP directory API, please join our Discord server