You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需第三方API的Azure Functions企业邮件发送方案(供Snowflake调用)

完全存在不需要借助SendGrid、MailGun等第三方邮件API的实现方案,以下是两种可行的落地路径,以及对接Snowflake外部函数的配置方法:

方案1:SMTP直连企业域名邮箱(通用方案,适配所有支持SMTP的企业邮箱)

这个方案直接调用企业邮箱本身的SMTP服务发送邮件,不需要引入任何外部第三方邮件服务,适用性最广。

前置要求

  • 你的企业域名邮箱已开启SMTP发送权限,获取到SMTP服务器地址、端口、发件人邮箱账号、发件人授权码(部分服务商叫应用密码)

Azure Functions核心实现示例(Python运行时)

直接用Python标准库实现,不需要额外安装第三方依赖:

import azure.functions as func
import smtplib
from email.mime.text import MIMEText
from email.header import Header

def main(req: func.HttpRequest) -> func.HttpResponse:
    # 从Snowflake外部函数的请求中获取参数
    req_body = req.get_json()
    recipient = req_body.get('recipient')
    subject = req_body.get('subject')
    content = req_body.get('content')

    # 企业邮箱SMTP配置,替换为你自己的参数
    smtp_server = 'smtp.your-company-domain.com'
    smtp_port = 465 # 一般SSL端口是465,非SSL是25或者587
    sender_email = 'notice@your-company-domain.com'
    sender_auth_code = 'your-smtp-auth-code'

    # 构造邮件
    msg = MIMEText(content, 'plain', 'utf-8')
    msg['From'] = Header(f"系统通知 <{sender_email}>", 'utf-8')
    msg['To'] = Header(recipient, 'utf-8')
    msg['Subject'] = Header(subject, 'utf-8')

    # 发送邮件
    try:
        server = smtplib.SMTP_SSL(smtp_server, smtp_port)
        server.login(sender_email, sender_auth_code)
        server.sendmail(sender_email, recipient, msg.as_string())
        server.quit()
        return func.HttpResponse(status_code=200, body="邮件发送成功")
    except Exception as e:
        return func.HttpResponse(status_code=500, body=f"邮件发送失败:{str(e)}")
方案2:Microsoft Graph API发送(仅适配Microsoft 365托管的企业域名邮箱)

如果你的企业域名邮箱是托管在Microsoft 365上的,可直接调用Azure生态内的Graph API发送邮件,不需要开启SMTP权限,权限管控更符合企业合规要求。

前置配置

  • 在Azure AD中注册应用,授予应用级别的Mail.Send权限,由全局管理员授予同意
  • 记录该应用的客户端ID、客户端密钥、租户ID

Azure Functions调用逻辑

  • 用Azure Identity库获取Graph API访问令牌
  • 调用https://graph.microsoft.com/v1.0/users/{发件人邮箱ID}/sendMail接口发送邮件即可
对接Snowflake外部函数配置步骤
  • 配置Azure Functions触发器为HTTP触发,认证方式选择API密钥或者Azure AD认证
  • 在Snowflake中创建API集成,关联Azure Functions的访问端点,配置对应访问权限
  • 创建Snowflake外部函数,定义入参为收件人、主题、内容等你需要的字段,绑定到Azure Functions的HTTP触发地址
  • 测试正常后,即可在Snowflake存储过程中直接调用该外部函数触发邮件发送
注意事项
  • 提前为你的发件人域名配置SPF、DKIM、DMARC解析记录,避免邮件被收件方判定为垃圾邮件
  • 若使用SMTP方案,注意遵循企业邮箱的发送频率限制,避免触发限流
  • 如果Azure Functions的出站IP被企业邮箱服务拦截,将Azure Functions的所有出站IP添加到企业邮箱的白名单即可

内容的提问来源于stack exchange,提问作者Santhosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 13:54:02