69 lines
1.3 KiB
Go
69 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"stalwart_client/pkg/api"
|
|
"strings"
|
|
)
|
|
|
|
func main() {
|
|
// 解析命令行参数
|
|
emailPtr := flag.String("e", "hayfzgul@evnmail.com", "邮箱地址")
|
|
passwordPtr := flag.String("p", "", "邮箱密码")
|
|
serverPtr := flag.String("s", "mail.evnmail.com", "IMAP服务器地址")
|
|
portPtr := flag.Int("P", 993, "IMAP服务器端口")
|
|
numPtr := flag.Int("n", 1, "获取的邮件数量")
|
|
noSSLPtr := flag.Bool("no-ssl", false, "禁用SSL连接")
|
|
configPtr := flag.String("c", "", "配置文件路径")
|
|
|
|
flag.Parse()
|
|
|
|
// 加载配置
|
|
_, err := api.LoadConfig(*configPtr)
|
|
if err != nil {
|
|
fmt.Printf("加载配置失败: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// 检查密码
|
|
password := *passwordPtr
|
|
if password == "" {
|
|
fmt.Println("错误: 必须提供邮箱密码")
|
|
flag.Usage()
|
|
os.Exit(1)
|
|
}
|
|
|
|
// 提取域名
|
|
parts := strings.Split(*emailPtr, "@")
|
|
domain := ""
|
|
if len(parts) > 1 {
|
|
domain = parts[1]
|
|
}
|
|
|
|
// 如果未指定服务器,尝试使用邮箱域名
|
|
server := *serverPtr
|
|
if server == "" && domain != "" {
|
|
server = fmt.Sprintf("mail.%s", domain)
|
|
}
|
|
|
|
// 获取邮件
|
|
emails, err := api.GetLatestEmails(
|
|
*emailPtr,
|
|
password,
|
|
server,
|
|
*portPtr,
|
|
!*noSSLPtr,
|
|
*numPtr,
|
|
)
|
|
|
|
if err != nil {
|
|
fmt.Printf("获取邮件失败: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
// 打印邮件信息
|
|
api.PrintEmails(emails)
|
|
}
|