Azure ML中使用SendGrid发送邮件无报错但收发失败问题
问题诱因及解决方法
核心诱因
你编写的代码仅定义了azureml_main()函数,但没有在脚本全局作用域中主动调用该函数。Python执行脚本时默认只会运行全局作用域的代码,未被调用的函数内部逻辑完全不会触发,因此运行脚本后没有任何输出,也不会执行邮件发送逻辑。
排查解决步骤
- 补全基础代码缺失项
你当前的代码存在两处基础缺失,修改ScheduleRun.py文件:- 函数内使用了
os.environ但未导入os模块,需要在导入语句部分补全import os - 在代码末尾添加函数调用逻辑,触发执行:
if __name__ == "__main__": azureml_main() - 函数内使用了
- 校验SendGrid配置有效性
- 确认你使用的环境变量
SG API Code在运行脚本的AML计算终端中已正确配置,可以在调用函数前添加打印语句校验:print(os.environ.get('SG API Code')),若输出为None则说明环境变量未配置生效 - 确认发件人邮箱已在SendGrid控制台完成身份校验,未通过校验的发件人会被SendGrid静默拦截发送请求
- 确认你使用的环境变量
- 校验网络连通性
若你使用的AML计算资源配置了VNet私有网络隔离,需要确认出站规则已放行SendGrid API的公网访问权限,避免请求被网络规则拦截。
内容的提问来源于stack exchange,提问作者WPB
相关产品推荐
相关产品推荐

