email-doc-sender 1.0.2 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -32
- package/dist/config/email.config.d.ts.map +1 -1
- package/dist/config/email.config.js +12 -26
- package/dist/config/email.config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,17 +12,16 @@
|
|
|
12
12
|
|
|
13
13
|
## 安装
|
|
14
14
|
|
|
15
|
-
###
|
|
15
|
+
### Claude CLI (推荐)
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
|
|
18
|
+
claude mcp add email-doc-sender --scope user -- npx email-doc-sender@latest
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
###
|
|
21
|
+
### 全局安装
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
npm install email-doc-sender
|
|
25
|
-
npx email-doc-sender
|
|
24
|
+
npm install -g email-doc-sender
|
|
26
25
|
```
|
|
27
26
|
|
|
28
27
|
### 从源码安装
|
|
@@ -36,6 +35,8 @@ npm run build
|
|
|
36
35
|
|
|
37
36
|
## 配置
|
|
38
37
|
|
|
38
|
+
### 配置文件
|
|
39
|
+
|
|
39
40
|
创建配置文件 `~/.email-doc-sender/config.json`:
|
|
40
41
|
|
|
41
42
|
```json
|
|
@@ -51,49 +52,52 @@ npm run build
|
|
|
51
52
|
}
|
|
52
53
|
```
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
- `
|
|
57
|
-
- `
|
|
58
|
-
- `
|
|
59
|
-
- `
|
|
60
|
-
- `
|
|
55
|
+
### 环境变量 (可选,优先级更高)
|
|
56
|
+
|
|
57
|
+
- `EMAIL_SMTP_HOST` - SMTP 服务器地址
|
|
58
|
+
- `EMAIL_SMTP_PORT` - SMTP 端口
|
|
59
|
+
- `EMAIL_SMTP_SECURE` - 是否使用 SSL (true/false)
|
|
60
|
+
- `EMAIL_SMTP_USER` - 邮箱用户名
|
|
61
|
+
- `EMAIL_SMTP_PASS` - 邮箱密码或授权码
|
|
62
|
+
- `EMAIL_FROM` - 发件人邮箱地址
|
|
61
63
|
|
|
62
64
|
## 邮箱配置示例
|
|
63
65
|
|
|
64
66
|
### QQ 邮箱
|
|
65
67
|
- 获取授权码:设置 → 账户 → POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 → 生成授权码
|
|
68
|
+
- SMTP: `smtp.qq.com:587`, secure: false
|
|
66
69
|
|
|
67
70
|
### 163 邮箱
|
|
68
|
-
-
|
|
71
|
+
- SMTP: `smtp.163.com:465`, secure: true
|
|
69
72
|
|
|
70
73
|
### Gmail
|
|
71
74
|
- 需要启用[应用专用密码](https://support.google.com/accounts/answer/185833)
|
|
75
|
+
- SMTP: `smtp.gmail.com:587`, secure: false
|
|
72
76
|
|
|
73
|
-
|
|
77
|
+
### Outlook / Microsoft 365
|
|
74
78
|
|
|
75
|
-
|
|
76
|
-
|
|
79
|
+
#### Outlook.com (个人账户)
|
|
80
|
+
| 参数 | 值 |
|
|
81
|
+
|------|-----|
|
|
82
|
+
| SMTP 服务器 | `smtp-mail.outlook.com` |
|
|
83
|
+
| 端口 | `587` |
|
|
84
|
+
| 加密方式 | STARTTLS (secure: false) |
|
|
77
85
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
```
|
|
86
|
+
#### Microsoft 365 / Office 365 (企业账户)
|
|
87
|
+
| 参数 | 值 |
|
|
88
|
+
|------|-----|
|
|
89
|
+
| SMTP 服务器 | `smtp.office365.com` |
|
|
90
|
+
| 端口 | `587` |
|
|
91
|
+
| 加密方式 | STARTTLS (secure: false) |
|
|
88
92
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
+
**重要提示**: 如果启用了双因素验证 (2FA),需要生成[应用专用密码](https://account.live.com/proofs/AppPassword),使用应用密码而非账户密码。
|
|
94
|
+
|
|
95
|
+
### 126 / 163 邮箱
|
|
96
|
+
- SMTP: `smtp.163.com:465`, secure: true
|
|
93
97
|
|
|
94
|
-
##
|
|
98
|
+
## 使用
|
|
95
99
|
|
|
96
|
-
配置完成后重启 Claude
|
|
100
|
+
配置完成后重启 Claude,然后:
|
|
97
101
|
|
|
98
102
|
```
|
|
99
103
|
# 发送文字
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.config.d.ts","sourceRoot":"","sources":["../../src/config/email.config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email.config.d.ts","sourceRoot":"","sources":["../../src/config/email.config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAMvE,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAA4B;gBAE9B,UAAU,CAAC,EAAE,MAAM;IAIzB,IAAI,IAAI,OAAO,CAAC,WAAW,CAAC;IA2ClC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,gBAAgB;IA0BxD,SAAS,IAAI,WAAW;IAOxB,OAAO,CAAC,YAAY;IAKpB,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAK7C,SAAS,IAAI,IAAI;CAUlB;AAID,wBAAgB,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa,CAKnE"}
|
|
@@ -1,40 +1,26 @@
|
|
|
1
1
|
import { promises as fs } from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
|
-
import { fileURLToPath } from 'url';
|
|
4
3
|
import { homedir } from 'os';
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
// Config file search paths (in order of priority)
|
|
8
|
-
const CONFIG_PATHS = [
|
|
9
|
-
// User home directory (for npm global installs)
|
|
10
|
-
path.join(homedir(), '.email-doc-sender', 'config.json'),
|
|
11
|
-
// Project directory
|
|
12
|
-
path.join(PROJECT_ROOT, '.email-doc-sender.json'),
|
|
13
|
-
// Legacy project directory (development)
|
|
14
|
-
path.join(PROJECT_ROOT, '.spec-workflow', 'config', 'email-config.json'),
|
|
15
|
-
];
|
|
4
|
+
// Config file path
|
|
5
|
+
const CONFIG_PATH = path.join(homedir(), '.email-doc-sender', 'config.json');
|
|
16
6
|
export class ConfigManager {
|
|
17
7
|
configPath;
|
|
18
8
|
config = null;
|
|
19
9
|
constructor(configPath) {
|
|
20
|
-
this.configPath = configPath ||
|
|
10
|
+
this.configPath = configPath || CONFIG_PATH;
|
|
21
11
|
}
|
|
22
12
|
async load() {
|
|
23
13
|
let fileConfig = {};
|
|
24
|
-
// Try to load
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
catch (error) {
|
|
33
|
-
if (error.code !== 'ENOENT') {
|
|
34
|
-
throw new Error(`Invalid config file: ${configPath}`);
|
|
35
|
-
}
|
|
36
|
-
// Continue to next path
|
|
14
|
+
// Try to load config file
|
|
15
|
+
try {
|
|
16
|
+
const configContent = await fs.readFile(this.configPath, 'utf-8');
|
|
17
|
+
fileConfig = JSON.parse(configContent);
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
if (error.code !== 'ENOENT') {
|
|
21
|
+
throw new Error(`Invalid config file: ${this.configPath}`);
|
|
37
22
|
}
|
|
23
|
+
// Config file not found, use defaults/env
|
|
38
24
|
}
|
|
39
25
|
// Environment variables (override file config)
|
|
40
26
|
const envHost = process.env.EMAIL_SMTP_HOST;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.config.js","sourceRoot":"","sources":["../../src/config/email.config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"email.config.js","sourceRoot":"","sources":["../../src/config/email.config.ts"],"names":[],"mappings":"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"}
|