feat: 重构配置文件格式并添加 IMAP ID 命令支持
- 配置文件分离:用户配置与项目配置分离,项目级配置(客户端信息、需要 ID 命令的 provider)放在代码中 - 新增 check_id 字段:用户可选择禁用单个账户的 ID 命令发送 - 简化 provider:只保留 163 和 QQ,移除未使用的 Gmail/Outlook/188 等 - 修复 163 邮箱收件箱问题:通过发送 IMAP ID 命令解决 Unsafe Login 错误 BREAKING CHANGE: 配置文件格式变化,旧配置不兼容
This commit is contained in:
14
imap.go
14
imap.go
@@ -62,6 +62,20 @@ func FetchUnreadEmails(account Account, days int) ([]ReceivedEmail, error) {
|
||||
}
|
||||
defer m.Close()
|
||||
|
||||
if account.CheckID != nil && *account.CheckID {
|
||||
info := ProjectConfig.Info
|
||||
idCmd := fmt.Sprintf("ID (\"name\" \"%s\" \"version\" \"%s\" \"vendor\" \"%s\")",
|
||||
info.Name, info.Version, info.Vendor)
|
||||
_, err := m.Exec(idCmd, false, 0, func(line []byte) error {
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
fmt.Printf("WARNING: failed to send IMAP ID: %v\n", err)
|
||||
}
|
||||
|
||||
m.Exec("NOOP", false, 0, nil)
|
||||
}
|
||||
|
||||
err = m.SelectFolder("INBOX")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to select inbox: %w", err)
|
||||
|
||||
Reference in New Issue
Block a user