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

Azure Databricks Notebook无法发送邮件问题排查求助

Azure Databricks Notebook邮件发送排查方案

针对你代码执行正常但收不到邮件的问题,从代码本身、邮件服务配置、Databricks环境三个维度逐一排查:

1. 收件人格式错误

你的send_to参数传入的是字符串("mohitgupta@gmail.com"),但COMMASPACE.join(send_to)会将字符串拆分为单个字符拼接,导致收件人格式完全失效(比如变成m,o,h,i,t,g,u,p,t,a,@,g,m,a,i,l,.,c,o,m)。

修复方法:
将send_to改为列表格式,或者在函数内部自动处理字符串转列表:

# 方法1:调用时传入列表
send_mail(send_to=["mohitgupta@gmail.com"], ...)

# 方法2:函数内部兼容处理
def send_mail(..., send_to="mohitgupta@gmail.com", ...):
    # 新增:如果send_to是字符串,转为单元素列表
    if isinstance(send_to, str):
        send_to = [send_to]
    msg['To'] = COMMASPACE.join(send_to)

2. Outlook账号认证问题

使用Outlook SMTP服务时,常见认证失败原因:

  • 两步验证开启:如果账号开启了两步验证,必须使用应用密码代替普通密码登录,不能直接用账号原密码。
  • 应用权限限制:微软默认限制非官方应用登录,需在Outlook账号设置中开启“允许第三方应用访问”(或采用现代认证方式)。
  • 邮箱拼写错误:代码中发件人邮箱为mohit@comapany.com(注意comapany少了一个n),如果实际邮箱是company.com,会直接导致认证失败。

3. Azure Databricks网络限制

Databricks集群默认可能阻止SMTP出站端口(587):

  • 标准集群:检查集群网络配置,确认是否允许出站到smtp-mail.outlook.com的587端口。
  • VNet部署集群:需要在VNet的网络安全组(NSG)中添加出站规则,允许TCP 587端口到目标SMTP服务器。

4. 缺少错误捕获与调试日志

你的代码没有任何异常处理,即使SMTP连接、认证或发送过程中出错,也不会输出错误信息,导致无法定位问题。

添加错误捕获与调试示例:

def send_mail(...):
    try:
        # 原邮件构建代码
        
        smtp = smtplib.SMTP(server, port)
        smtp.set_debuglevel(1)  # 开启调试日志,查看SMTP交互细节
        if use_tls:
            smtp.starttls()
        smtp.login(username, password)
        smtp.sendmail(send_from, send_to, msg.as_string())
        smtp.quit()
        print("邮件发送成功")
    except smtplib.SMTPAuthenticationError:
        print("认证失败:检查账号密码或应用权限")
    except smtplib.SMTPConnectError:
        print("连接失败:检查SMTP服务器地址、端口或网络限制")
    except Exception as e:
        print(f"发送失败:{str(e)}")

开启set_debuglevel(1)会打印SMTP交互的详细日志,能直接定位到具体失败环节。

5. 附件路径验证

确认附件路径/dbfs/FileStore/MOhit_test/Sample_Spreadsheet_10_rows_1.csv真实存在且有权限访问:
在Notebook中执行以下代码验证:

dbutils.fs.ls("/FileStore/MOhit_test/")  # Databricks中路径无需/dbfs前缀

如果文件不存在会抛出异常,若存在但权限不足也会导致读取失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 23:35:36