3.8 KiB
3.8 KiB
name, description, status, version, date
| name | description | status | version | date |
|---|---|---|---|---|
| weekly-report-dingtalk-draft | 生成项目周报草稿存入钉邮草稿箱(仅草稿禁发)。固化杨轩周报标准格式/签名/收件抄送。 | proposal | v1 | 2026-07-31T02:07:55.496Z |
周报草稿生成技能(钉邮草稿箱)
用途
为杨轩生成项目周报并保存到钉钉企业邮箱(钉邮)草稿箱,禁止直接发送(红线)。
发送渠道
- himalaya IMAP 存草稿不可用(
feature not available)——不要用它存草稿/send。 - 使用 Python imaplib + 钉邮 IMAP:
imap.mxhichina.com:993(SSL),账号密码从 himalaya 配置读取。 - SMTP 可发不用;本技能只存草稿。
- 草稿文件夹 IMAP 名(modified UTF7):
&g0l6Pw-(即「草稿」)。可用m.list()复核。
凭据读取(不硬编码、不外泄)
从 /home/yangxuan/.config/himalaya/config.toml 读取:
accounts.yangxuan."imap.sasl.plain.username"、"imap.sasl.plain.password.raw"。
用正则匹配键名取值;脚本里用变量引用,不要把密码打印到日志/聊天。
固定配置(每次执行仍须向用户确认)
- 收件人:刘强
<liuqiang@witsoft.cn> - 抄送:陈明
<chenm@witsoft.cn>、曾莉<zengli@witsoft.cn>(不含吴睿东 wurd,已去除)
主题格式
半角括号 + 空格~空格,RFC2047 编码(整个主题做 base64):
Gx开发周报 (YYYY-MM-DD ~ YYYY-MM-DD)
示例:G6开发周报 (2026-07-27 ~ 2026-07-31)
正文结构(text/plain + text/html 双部分 multipart/alternative)
项目名称: 维云智造Gx
主要任务: <简短短语>
本周工作内容
周一(YYYY-MM-DD)
- <条目>
- <条目>
周二(YYYY-MM-DD)
- ...
(周一到周五)
存在问题
无
Best regards,
杨轩
地址:中国·南京云密城L栋5/10楼
手机:18726128489
邮箱:yangxuan@witsoft.cn
- HTML 用
<b>加粗标题、 空格、<br >换行、条目 -。 - 签名含图片(外链):
https://mail-online.nosdn.127.net/wzpmmc/65e8a1396c5c0dbb66cecd9792d4504b.jpg,签名文字灰色(#bfbfbf, Microsoft Yahei 13px)。
Header 编码(关键,易踩坑)
RFC2047,姓名单独编码成带引号 "=?UTF-8?B?...?=",邮箱明文;不要把姓名+邮箱一起编码(会导致收件人重叠乱码)。
From: "=?UTF-8?B?5p2o6L2p?=" <yangxuan@witsoft.cn>
To: "=?UTF-8?B?5YiY5by6?=" <liuqiang@witsoft.cn>
Cc: "=?UTF-8?B?6ZmI5piO?=" <chenm@witsoft.cn>, "=?UTF-8?B?5pu+6I6J?=" <zengli@witsoft.cn>
Subject: =?UTF-8?B?<base64(整个主题)>?=
人名 base64 速查:
- 杨轩
5p2o6L2p、刘强5YiY5by6、陈明6ZmI5piO、曾莉5pu+6I6J、吴睿东5ZC0552/5Lic(勿用其抄送)
存草稿命令(Python)
import imaplib, time, re, base64
# 读取凭据 ...
m = imaplib.IMAP4_SSL('imap.mxhichina.com', 993); m.login(USER, PASS)
m.select(DRAFT)
typ, data = m.search(None, 'ALL'); ids = data[0].split()
if ids: # 先清空旧草稿再覆盖
m.store(b','.join(ids), '+FLAGS', r'(\Deleted)'); m.expunge()
m.append(DRAFT, None, imaplib.Time2Internaldate(time.time()), raw_eml_bytes)
m.logout()
- 用
EmailMessage/MIMEText组装,或字节级拼接 header + body(推荐字节级拼接避免库自动编码干扰 header)。
红线
- 仅存草稿箱,禁止直接发送/
send。未获杨轩明确放行绝不执行 SMTP 发送。 - 草稿进入草稿箱后,交付给杨轩到钉邮核对;杨轩放行后才允许发送。
工作流
- 收集本周(周一到周五)日报内容。
- 组装 plain + html,套用固定签名。
- 正确 RFC2047 header。
- imaplib APPEND 到草稿箱(先清旧草稿)。
- 回报草稿信息(主题/收件/抄送/有无签名)给杨轩,等放行。