必须通过webhook调用sendgrid api实现大规模邮件群发:需配置sendgrid api密钥(勾选mail send权限)、在dify中设置webhook节点(url为https://api.sendgrid.com/v3/mail/send,含bearer认证头),body严格遵循json格式(含from、personalizations、subject、content字段),超10人需配合list iterator节点循环发送,并配置重试机制与失败告警。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Dify中实现大规模活动邮件的自动群发,必须绕过Dify原生不支持SMTP外发的限制,通过Webhook调用SendGrid API完成消息投递——这要求你既配置好SendGrid的API密钥权限,又在Dify工作流中正确构造JSON payload并处理响应状态。
获取SendGrid API密钥并启用邮件发送权限
登录SendGrid控制台 → Settings → API Keys → Create API Key → 勾选“Mail Send”权限 → 点击“Create Key” → 复制生成的密钥字符串(以SG开头,共64字符)。
【该密钥仅显示一次,关闭页面后无法再次查看,务必立即保存】
将密钥粘贴到安全的密码管理器中,不要存入代码或Dify环境变量字段明文展示。
在Dify中创建Webhook节点接入SendGrid
进入Dify应用编辑页 → 左侧导航点击“Workflow” → 点击画布空白处 → 选择“Webhook”节点 → 在URL字段填入:https://api.sendgrid.com/v3/mail/send。
Method选择POST,Headers添加两行:
Key: Authorization,Value: Bearer
Key: Content-Type,Value: application/json
Body使用JSON模板,必须包含以下字段:sender(verified email)、personalizations.0.to.0.email、subject、content.0.value。缺任一字段会导致400错误且无明确提示。
构造符合SendGrid规范的邮件内容结构
方法一:使用Dify内置变量动态拼接
在Webhook Body中写入:
{
"from": {"email": "noreply@yourdomain.com"},
"personalizations": [{"to": [{"email": "{{user_email}}"}]}],
"subject": "{{email_subject}}",
"content": [{"type": "text/html", "value": "{{email_body_html}}"}]
}
注意:{{user_email}}必须来自上游节点输出的合法邮箱格式字符串,若为空或含空格会触发SendGrid 400校验失败。
方法二:硬编码收件人+批量循环调用
若需群发给1000+用户,不可在单次请求中填入多个to地址——SendGrid免费层单请求最多10个收件人,超限返回400且不发任何邮件。必须配合Dify的“List Iterator”节点,将邮箱列表拆解为单条输入,逐个触发Webhook。
配置错误重试与失败日志捕获
第一步:在Webhook节点右侧打开“Advanced Settings” → 启用“Retry on failure” → 设置最大重试次数为3次 → 间隔时间选“Exponential backoff”。
第二步:勾选“Capture response body” → 将响应体映射到变量名如sg_response → 在后续“Condition”节点中判断sg_response.status_code != 202时跳转至告警分支。
第三步:告警分支连接“Notification”节点,选择“Email”渠道,填写运维邮箱,Message填:SendGrid发送失败,ID: {{sg_response.body.errors.0.message}}。
这一步不能跳过——SendGrid成功返回的是202 Accepted,不是200;若收到4xx/5xx响应,说明API密钥失效、配额耗尽或模板语法错误,必须人工介入。











