如何从Databricks通过Outlook以TXT格式共享表格数据?
解决方案
一、直接从数据源生成结构化TXT并自动发送
如果表格数据来自数据库、Excel或CSV,完全可以跳过dbx环节,用脚本直接生成规范TXT后自动发邮件,扩展性和效率拉满:
- Python示例(适配Excel/CSV数据源):
用pandas读取表格,转成分隔符或固定列宽格式的TXT,再通过SMTP发送:import pandas as pd import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart # 读取表格数据 df = pd.read_excel("your_table.xlsx") # 生成|分隔的结构化TXT(可自定义分隔符或格式) txt_content = df.to_csv(sep="|", index=False) # 构建邮件 msg = MIMEMultipart() msg["From"] = "your_email@domain.com" msg["To"] = "recipient@domain.com" msg["Subject"] = "表格数据(TXT格式)" msg.attach(MIMEText(txt_content, "plain")) # 用Outlook 365 SMTP发送 with smtplib.SMTP("smtp.office365.com", 587) as server: server.starttls() server.login("your_email@domain.com", "your_app_password") server.send_message(msg)
二、提取DBX文件中的表格数据转TXT
如果必须从dbx文件提取,可用专门解析库提取表格内容后转TXT:
- Python示例(用
dbxreader库):
先安装库pip install dbxreader,再解析dbx中的邮件表格(假设是HTML格式):
要是dbx里的表格是纯文本格式,直接提取对应段落处理即可,不用HTML解析。from dbxreader import DBXReader from bs4 import BeautifulSoup import pandas as pd # 读取dbx文件 reader = DBXReader("your_file.dbx") for message in reader.messages: # 解析邮件HTML中的表格 soup = BeautifulSoup(message.body, "html.parser") tables = soup.find_all("table") if tables: # 转成DataFrame后生成TXT df = pd.read_html(str(tables[0]))[0] txt_content = df.to_string(index=False) # 保存或直接发送TXT with open(f"table_{message.id}.txt", "w", encoding="utf-8") as f: f.write(txt_content)
三、Outlook 365自动化导出TXT
用PowerShell直接操作Outlook,筛选目标邮件后导出表格为TXT并发送:
- PowerShell示例:
$outlook = New-Object -ComObject Outlook.Application $namespace = $outlook.GetNamespace("MAPI") $inbox = $namespace.GetDefaultFolder(6) # 6代表收件箱 foreach ($mail in $inbox.Items) { if ($mail.Subject -match "表格数据") { # 筛选目标邮件 # 提取HTML表格内容 $html = $mail.HTMLBody $table = [regex]::Match($html, "<table.*?</table>", [System.Text.RegularExpressions.RegexOptions]::Singleline).Value if ($table) { # 先安装模块:Install-Module -Name HtmlTableConverter $txtContent = ConvertFrom-HtmlTable -Html $table | ConvertTo-Csv -Delimiter "|" -NoTypeInformation $txtContent | Out-File -FilePath "C:\output\table.txt" -Encoding UTF8 # 自动发送带TXT附件的邮件 $newMail = $outlook.CreateItem(0) $newMail.Subject = "表格数据TXT版" $newMail.To = "recipient@domain.com" $newMail.Attachments.Add("C:\output\table.txt") $newMail.Send() } } }
四、替代PST转换的轻量方案
如果需要处理邮件容器但不想用PST,还有两个选项:
- 用Outlook自带的邮件导出功能,把邮件存为MSG文件,再用Python的
msg-extractor库解析MSG中的表格转TXT。 - 用本地运行的第三方工具(比如
DBX Viewer)打开dbx,批量导出邮件中的表格为TXT,适合非编码场景。
内容的提问来源于stack exchange,提问作者Harshit C
相关产品推荐
相关产品推荐

