在Dify中配置SendGrid API实现个性化邮件推送:先在SendGrid控制台创建带Mail Send权限的API密钥并验证发信域名;再在Dify工作流中用HTTP请求节点调用SendGrid API,通过Jinja2动态渲染用户偏好内容;支持条件分支、变量映射表、代码运行节点三种定制化逻辑;最后经模拟测试、SendGrid日志核查、邮箱实收验证后发布。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在Dify中配置SendGrid API,让系统根据用户订阅时选择的品类、频次、地域等偏好字段,自动触发内容定制化邮件推送,避免手动维护邮件列表和重复编写模板。
准备SendGrid API密钥与发信域名
登录SendGrid控制台 → Settings → API Keys → Create API Key → 勾选“Mail Send”权限 → 复制生成的密钥字符串(以SG开头)。
进入Sender Authentication → Domain Authentication → 添加并验证你拥有的域名(如newsletter.yourbrand.com),【未完成域名验证会导致邮件被标记为垃圾邮件或直接拒发】。验证需在DNS服务商处添加TXT和CNAME记录,通常需10–60分钟生效。
在Dify工作流中接入SendGrid节点
打开Dify项目 → 进入「应用编排」→ 点击「+ 添加节点」→ 选择「HTTP请求」节点 → 设置请求方式为POST。
URL填写:https://api.sendgrid.com/v3/mail/send;Headers添加两行:
Authorization: Bearer 【粘贴你刚复制的SG开头API密钥】
Content-Type: application/json
Body使用JSON格式,必须包含from、personalizations、subject、content字段。其中personalizations数组里to字段需动态传入用户邮箱(用{{user.email}}引用变量),subject和content可嵌入Jinja2语法,例如:{{ user.preferred_category | upper }} Weekly Digest。
构建用户偏好驱动的内容逻辑
方法一:用条件分支节点分流
在HTTP请求节点前插入「条件分支」节点 → 设置判断字段为{{ user.frequency }} → 分支1:daily → 模板填充昨日数据摘要;分支2:weekly → 调用数据库聚合近7天内容;分支3:monthly → 触发长图文报告生成任务。
方法二:用变量映射表注入差异化文案
在「变量」面板中新建字典变量pref_text_map,内容示例:
{"tech": "深度技术解析", "design": "UI/UX趋势速览", "biz": "增长策略拆解"}
然后在SendGrid Body的content字段中写:{{ pref_text_map[user.preferred_category] or '精选内容' }}。
方法三:调用外部函数增强个性化
启用Dify「代码运行」节点 → Python脚本中调用本地推荐模型,输入user.id → 输出top3 article_ids → 将结果存入变量recommend_list → 在SendGrid Body中用for循环渲染:
{% for id in recommend_list %}
<li>{{ articles[id].title }}</li>
{% endfor %}
测试邮件发送链路
第一步:在Dify调试面板中,点击「模拟运行」→ 输入测试用户数据,包括email、preferred_category(如"tech")、frequency(如"weekly")。
第二步:检查SendGrid后台Activity Feed,确认状态为Processed且没有Error标记;若出现403错误,立即检查API Key权限是否含Mail Send;若出现500错误,返回Body JSON校验结构合法性。
第三步:查收测试邮箱,确认HTML渲染正常、链接可点击、图片加载成功;【特别注意:所有链接必须使用HTTPS,否则部分邮箱客户端会屏蔽】。
第四步:在Dify中保存工作流 → 发布应用 → 在Webhook或Agent触发入口中传入真实用户事件载荷。


















