ToolJet 自托管 SMTP 邮件配置指南:通过 GUI 与环境变量两种方式接入自定义邮件服务

发布时间:2026/9/10 19:24:11

ToolJet 自托管 SMTP 邮件配置指南:通过 GUI 与环境变量两种方式接入自定义邮件服务 ToolJet 自托管 SMTP 邮件配置指南通过 GUI 与环境变量两种方式接入自定义邮件服务【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJetToolJet 的 SMTP 配置功能专属于自托管self-hosted部署形态允许实例管理员接入自选邮件服务器用于发送邀请邮件、密码重置请求与各类通知。本文基于官方配置文档结合仓库中 服务端 SMTP 模块 与 邮件发送实现 的源码系统讲解在 ToolJet 中完成 SMTP 配置的两种方式GUI 与环境变量并深入说明配置项背后的校验逻辑与发送链路帮助你按需搭建可用的邮件基础设施。功能定位与适用场景SMTP 配置是自托管 ToolJet 实例的基础能力之一其核心用途是让 ToolJet 通过你自己的邮件服务器对外发信典型场景包括向新成员发送工作区邀请邮件处理密码重置请求发送平台运行相关的通知邮件。ToolJet 提供了两种等价的配置路径GUI 配置直接在 ToolJet 界面填写 SMTP 参数适合简单场景配置结果存储在实例设置中环境变量配置通过.env文件注入 SMTP 参数灵活性和安全性更高适合在生产环境管理敏感凭据。两种方式都服务于同一个目标——确保 ToolJet 实例能按需发送邮件你可以根据部署偏好与安全要求任选其一。前置条件开始配置前请确认已具备以下条件拥有 ToolJet 的Super Admin超级管理员权限已从邮件服务商处获取SMTP 服务器信息主机名、端口、账号、密码等。方式一通过 GUI 配置 SMTPGUI 方式的操作路径非常直接共 5 步进入 ToolJet 的Settings设置区域选择Email protocol (SMTP)标签页打开开关启用 Email protocol (SMTP)填写以下配置字段字段说明示例HostSMTP 服务器主机名smtp.gmail.comPortSMTP 服务器端口号587UserSMTP 账号用户名hellojohndoe.techPasswordSMTP 账号密码a13d0sd344Senders email发件人邮箱地址hellojohndoe.tech点击Save changes保存更改应用新的 SMTP 配置。GUI 配置背后的接口与校验逻辑从源码可以确认GUI 保存的配置最终落在/smtp相关的 API 上。前端实例设置服务 对/smtp读取/更新 SMTP 设置、/smtp/env切换环境变量配置开关、/smtp/status启用/停用开关三个端点发起请求对应后端 SMTP 控制器 中由JwtAuthGuard与FeatureAbilityGuard保护的四个方法。提交的数据在 SMTP DTO 中经过严格校验host、port、user、password均为必填字符串且会经过sanitizeInput清洗fromEmail可选但必须通过IsEmail校验否则返回From email is invalid。这意味着 GUI 上任意一个必填项为空保存都会失败填写时应确保五项字段完整。方式二通过环境变量配置 SMTPToolJet 允许直接用环境变量完成 SMTP 配置。你只需在 Settings 的Email protocol (SMTP)页面开启Apply configuration from environment variables开关即可让配置直接从.env文件读取。文档给出的示例环境变量如下DEFAULT_FROM_EMAILhellotooljet.io SMTP_USERNAMEyour-username SMTP_PASSWORDyour-password SMTP_DOMAINsmtp.mailgun.org SMTP_PORT587 SMTP_SSLfalse SMTP_DISABLEDfalse各变量含义与 部署环境变量文档 中的表格一致环境变量作用DEFAULT_FROM_EMAIL发件人邮箱SMTP_USERNAMESMTP 登录用户名SMTP_PASSWORDSMTP 登录密码SMTP_DOMAINSMTP 服务器域名/主机SMTP_PORTSMTP 端口SMTP_SSL是否启用 SSLSMTP_DISABLED是否停用 SMTP 发信开关行为与源码对应关系新安装实例只要.env中配置了 SMTPApply configuration from environment variables开关默认即为开启状态开关开启时UI 中的 SMTP 字段会自动填充来自环境变量的值并变为只读开关关闭时可以手动在 UI 中填写或编辑 SMTP 设置。这一行为在源码中有明确对应。实例系统设置默认值定义于 instance-settings 常量SMTP_ENV_CONFIGURED默认即为true同时SMTP_ENABLED由SMTP_DISABLED true ? false : true推导而来——即只有在.env里显式设置SMTP_DISABLEDtrue时才会停用 SMTP。当开关开启时SMTPUtilService.getSmtpEnv 会直接返回默认实例设置即环境变量中的值跳过数据库中的实例配置当开关关闭时则返回数据库中保存的 UI 配置。这正是UI 只读与手动编辑两种状态的切换机制。发送链路中的实际取用逻辑环境变量与 UI 配置的取舍在真正发信时还会再做一次判断。邮件工具服务 mailTransport 中当SMTP_ENV_CONFIGURED true时host、port、username、password全部从ConfigService读取即.env否则从实例设置UI 配置读取。一个值得注意的实现细节SMTP_SSL环境变量本身并未被直接消费transport 的secure参数是由port 465推导得出的——端口为 465 时启用 SSL/TLS其他端口如 587则走 STARTTLS 加密。配置时请确保端口与加密方式匹配邮件服务商的约定。版本升级说明v2.62.0 及之后如果你是从 v2.62.0 之前的版本升级而来旧版.env中的 SMTP 变量会被自动映射到 UI无需重新手动填写。需要注意的是参见 部署环境变量文档从 v2.62.0 起企业版Enterprise Edition的 SMTP 配置不再从.env文件读取必须通过 UI 完成配置确认 UI 配置无误后可以从.env中安全移除这些变量。而社区版Community Edition仍可通过上述环境变量完成配置。也就是说本文介绍的两种方式中环境变量方式对社区版始终有效企业版则以 GUI 方式为准。邮件发送的完整链路源码视角理解配置之后再看 ToolJet 实际如何发信有助于排查配置正确但收不到邮件的问题。核心实现在 EmailUtilService.sendEmail流程如下收件人过滤若配置了FILTERED_DOMAINS_FOR_EMAIL匹配到这些域名的收件人会被直接跳过常用于测试环境模板渲染使用 Handlebars 编译mails/base/base_template.hbs及header/footer/body局部模板生成 HTML 邮件正文发送决策测试环境NODE_ENV test直接跳过发送开发环境且 SMTP 未启用时不真正发信而是把邮件内容打印到控制台并调用preview-email在本地预览其余情况通过nodemailer的createTransport建立真实连接发送发件人组装from字段格式为白标文本 DEFAULT_FROM_EMAIL发件人地址由SMTP_FROM_EMAIL决定——当SMTP_ENV_CONFIGURED true时取DEFAULT_FROM_EMAIL否则取 UI 中保存的 Senders email默认回退为hellotooljet.io。因此排查问题时可以按序确认实例是否启用 SMTPSMTP_ENABLED、环境变量开关状态SMTP_ENV_CONFIGURED、DEFAULT_FROM_EMAIL是否被收件方过滤以及端口/加密方式是否与邮件服务商一致。常见邮件服务商参数参考为了快速上手仓库还提供了常用邮件服务商的通用参数对照详见 常用邮件服务商文档服务商HostPort用户名密码Gmailsmtp.gmail.com587 或 465 (SSL)邮箱密码Yahoo Mailsmtp.mail.yahoo.com465 (SSL)邮箱密码Outlook.com/Hotmailsmtp.office365.com587 或 465 (SSL)邮箱密码Zoho Mailsmtp.zoho.com587 或 465 (SSL)邮箱密码SendGridsmtp.sendgrid.net587 或 465 (SSL)apikeyAPI keyMailgunsmtp.mailgun.org587 或 465 (SSL)SMTP username密码两个典型特例SendGrid用户名字段固定填apikey密码字段填生成的 API Key在 SendGrid 控制台 Settings → API Keys 页面生成MailgunSMTP 用户名需从 Domain Settings 页面的 SMTP Credentials 标签页获取密码为 Mailgun 账号密码。小结ToolJet 的 SMTP 配置为自托管实例提供了 GUI 与环境变量两条等价路径前者适合快速上手与集中管理后者更适合生产环境的自动化与凭据安全从 v2.62.0 起两者通过Apply configuration from environment variables开关联动源码层面则由SMTP_ENV_CONFIGURED统一裁决。配置完成后邀请、密码重置与通知邮件即可经由你指定的邮件服务器稳定送达。若需进一步排查可重点核对SMTP_ENABLED、SMTP_ENV_CONFIGURED与端口加密匹配情况并在开发环境下利用邮件预览输出快速验证配置正确性。【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/10 19:24:11

CANN/GE获取变化资源标识API

GetChangedResourceKeys 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

2026/9/10 19:24:11

CANN/ge NZ格式Transformer图示例

Sample Usage Guide 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Tensor…

2026/9/10 19:24:11

Kafka通信模式深度解析与性能优化实践

1. Kafka通信方案全景解析作为分布式消息系统的标杆,Kafka的通信能力直接影响着系统吞吐量和可靠性。在实际项目中,我们通常会根据业务场景混合使用多种通信模式。最近在金融级消息平台建设中,我深度实践了Kafka的各类通信方案,这…

2026/9/10 20:19:16

生命有限性的科学原理与跨学科应用

1. 生命有限性的哲学与科学解读"有限是生命产生的必要条件"这个命题看似简单,却蕴含着深刻的哲学思考和科学原理。作为一个长期关注生命科学和哲学交叉领域的观察者,我发现在探讨生命本质时,时间的有限性往往是最容易被忽视却又最为…

2026/9/10 20:19:16

cy5.5-F6P荧光探针的合成与应用

1. 项目概述:cy5.5-Fructose-6-phosphate的化学特性与应用价值cy5.5-果糖-6-磷酸(cy5.5-Fructose-6-phosphate)是一种将荧光染料cy5.5与果糖-6-磷酸(F6P)通过共价连接形成的生物标记化合物。这种分子探针结合了cy5.5染…

2026/9/10 20:14:16

动态可搜索对称加密(DSSE)原理与Python实现

1. 项目背景与核心价值动态可搜索对称加密(Dynamic Searchable Symmetric Encryption,DSSE)是近年来密码学领域备受关注的前沿方向。这项技术允许用户在加密文档集合上进行关键字搜索,同时保证数据隐私不被泄露。想象一下&#xf…

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 0:00:55

目录对比去重实战:用哈希算法精准清理重复文件

我电脑里现在还有一块换了三次机的“数据墓地”硬盘,里面存着2016年以前所有旧笔记本的完整备份。平时不觉得有什么,直到前阵子想把它整理归档,发现同一个安装包、同一批照片、同一份论文草稿,在几个不同的备份目录里反复出现。更…

2026/9/10 0:00:55

Leaflet离线地图完整Demo合集:内网部署与坐标纠偏实战

简介:这是一份面向Web GIS开发者的LeafLet离线地图示例合集,帮助开发者快速掌握离线地图从搭建到交互的完整流程。压缩包共723个文件,大小14.06MB,以319个js脚本、175个html页面和29个css样式文件为主体,配合png/svg图…

2026/9/10 0:00:55

MATLAB读取Rinex 3.02观测文件:多系统GNSS数据解析实战

简介:基于MATLAB开发的Rinex3.02版观测文件(o文件)读取代码包,面向卫星定位导航方向的学习者与研究人员,用于解决新版观测文件的数据解析、历元提取与时间转换问题。压缩包共4个文件,包含两个m脚本、一个19…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码