Foxmail绿色版便携邮箱:IMAP/POP3配置与冷备份迁移指南
简介:Foxmail 7 中文绿色免安装包面向需要在多台电脑间切换、又不愿在系统中留下安装痕迹的邮件用户,解压即可运行,省去安装与卸载的麻烦。压缩包共 640 个文件、约 12.81MB,以 219 个 gif、142 个 jpg、85 个 png、74 个 bmp 等界面图片和 48 个 htm 帮助页面为主,另有 19 个 dll 模块、8 个 exe 程序、6 个 xsl 模板及 3 个 db 数据文件,分别承担界面渲染、加密传输、导入导出与本地数据存储等职责,保留了较完整的皮肤与帮助文档。其中 ImportOL.dll、ImportPST.dll 支持从 Outlook 导入邮件与联系人,libeay32.dll、ssleay32.dll 提供 SSL/TLS 加密,Rtf2Html.dll 负责富文本转 HTML,兼顾邮件迁移、安全收发与多格式浏览。目前已有 384 人学习下载,适合经常异地办公、注重系统整洁的用户取用。
1. 解压即用的 foxmail 绿色版:我为什么把它塞进 U 盘当随身邮箱
单位配的笔记本三年换了两台,每次重装系统第一件事就是装 foxmail、重新配四个账号、等几万封历史邮件慢慢同步下来,这套动作我干过三遍之后就不想再干了。foxmail_chs7绿色版免安装包解决的正是这个场景:解压到一个目录,账号配置和本地邮件都跟着这个目录走,换机器时整个文件夹拷过去,打开就能看到熟悉的收件箱。它适合三类人:经常在多台机器之间切换的、需要把邮件历史攥在自己手里的、以及不方便在客户机器上留安装痕迹的。绿色版不是"精简版",功能该有的都有,差别只在数据落点和注册表依赖,这两点决定了它能不能真的便携,后面几章会把这件事拆开讲清楚。
2. 绿色版与安装版的差别:目录结构、注册表与数据落点
先把一个反直觉的结论摆在前面:所谓绿色版,不是"不需要写磁盘",而是"尽量不写系统盘"。foxmail 这类客户端天生要把邮件落到本地,区别只在于落到程序目录旁边,还是落到用户配置目录里。安装版走的是后者,绿色版通常被改成前者。搞清楚这一点,后面所有的备份、迁移、多开操作才有依据。
2.1 解压后先认目录:哪些是程序、哪些是你的数据
拿到压缩包解压完,第一件事不是双击 exe,而是把目录扫一遍。常见的绿色版打包会把主程序、语言资源、皮肤、以及一个用于存放账号数据的文件夹放在同一层。不同打包人的习惯不一样,有的把数据目录命名成Data,有的直接叫Storage,还有的干脆让程序首次运行时自己在同级目录创建。所以我一般的做法是先看一眼再启动,心里有个数。
# 列出解压目录的第一层结构,确认程序文件和数据目录的位置 $root = "D:\PortableTools\Foxmail" Get-ChildItem -Path $root -Force | Select-Object Name, @{n='类型';e={if($_.PSIsContainer){'目录'}else{'文件'}}}, Length | Format-Table -AutoSize # 进一步找可能存放账号数据的目录(关键词:Storage / Data / Account / Mailbox) Get-ChildItem -Path $root -Directory -Recurse -Depth 1 | Where-Object { $_.Name -match 'Storage|Data|Account|Mailbox' } | Select-Object FullName这段脚本干两件事:第一层列表让你分清哪些是可执行文件、哪些是资源目录;第二段按关键词往下探一层,把疑似数据目录的位置打出来。参数上-Depth 1控制递归深度,别设太大,否则在带大量皮肤资源或帮助文档的包里会把输出刷屏。-Force是为了把隐藏目录也带出来,有些打包会把配置文件设成隐藏属性,不加这个参数你会以为目录是空的。
看到的结果里,如果数据目录已经在程序目录内部,说明打包人已经帮你做了便携化,直接可用;如果没有,说明默认还是写用户配置目录,就得进入下一节的改造。
2.2 便携模式怎么落地:把数据目录钉在程序目录里
安装版的数据默认在用户配置目录下,路径形如C:\Users\你的用户名\AppData\Roaming\Foxmail\Storage。绿色版要便携,目标就是让程序认这个同级目录而不是系统盘。常见做法有三种,按可靠性从高到低排列。
第一种是打包人已经改好,程序内部硬编码了相对路径,这种情况最省事,你什么都不用做。第二种是程序启动时会读取同级目录下的配置文件或命令行参数来决定数据路径,这种需要你手动指定一次。第三种是既没有配置项也没有参数,那就只能靠"首次运行时把数据目录建在程序目录"这个行为,也就是先在一个干净环境里跑一次,确认它把数据写到了哪里,再决定后续策略。
判断方法很直接:启动程序、随便建一个账号(不填密码、只填地址也行)、然后退出,去看程序目录和%APPDATA%\Foxmail这两个位置哪个多出了新文件。
# 启动前后各拍一次快照,对比两个候选位置的文件数量和大小变化 $candidates = @( "D:\PortableTools\Foxmail", "$env:APPDATA\Foxmail" ) foreach ($p in $candidates) { if (Test-Path $p) { $files = Get-ChildItem -Path $p -Recurse -File -ErrorAction SilentlyContinue [PSCustomObject]@{ 路径 = $p 文件数 = $files.Count 总大小MB = [math]::Round(($files | Measure-Object Length -Sum).Sum / 1MB, 2) 最近写入 = ($files | Sort-Object LastWriteTime -Descending | Select-Object -First 1).LastWriteTime } } }这段代码输出的"最近写入"是关键字段。程序退出后,哪个路径下的文件时间戳是刚刚,数据就往哪写。如果两边都有更新,说明程序把配置和邮件分开放了,这种情况在旧版本里很常见——配置在系统盘、邮件在程序目录,便携性只做了一半,需要进一步把配置目录也搬过来,或者在打包说明里确认是否支持整体迁移。
提示:改造数据落点之前,先把原始解压目录整体复制一份留底。改路径这类操作一旦中途失败,原目录是唯一的后悔药。
2.3 首次启动的最小验证清单
很多人拿到绿色版的第一反应是把账号密码全填进去,然后发现收信失败、附件打不开、界面乱码,接着开始怀疑包有问题。顺序其实应该反过来:先用最小配置验证程序本身能跑通,再逐步加账号。
我在第一次跑一个新包时固定走这五步:第一步,确认程序能正常启动到主界面,不弹缺少 DLL 的报错;第二步,检查界面语言是不是中文,菜单栏有没有出现半中半英的混排;第三步,随便填一个测试账号,不发不收,只看它能否保存配置并在重启后还在;第四步,手动触发一次收信,观察进度条和错误提示,这一步能暴露网络和证书问题;第五步,退出程序,确认进程真的结束了,任务管理器里没有残留。
第三步和第五步是最容易翻车的。有些绿色版在保存配置时会写注册表,一旦写到 HKCU 下,换机器之后配置就丢了,便携性形同虚设。验证办法是保存账号后去看一眼注册表对应位置有没有新增项,有的话要么接受"半便携",要么找找包里有没有提供免注册表的启动方式。
第五步关系到数据完整性。foxmail 退出时会做索引收尾,如果进程被强制结束,下次启动可能提示修复。判断方法很简单:退出后用Get-Process查一下有没有同名进程还挂着。
# 退出程序后检查残留进程,确认数据写入已经收尾 Get-Process | Where-Object { $_.ProcessName -match 'foxmail' } | Select-Object ProcessName, Id, StartTime, @{n='内存MB';e={[math]::Round($_.WorkingSet64/1MB,1)}}如果查出来还有进程在,别急着杀,先等十秒再查一次,让索引写完。反复出现残留的话,说明这个包在退出流程上被改动过,后续每次使用都要养成"退出后确认进程结束再拔 U 盘"的习惯,否则迟早会遇到邮件索引损坏。
3. 账号接入实战:IMAP / POP3 / SMTP 参数怎么填
绿色版跑通只是第一步,真正决定好不好用的是账号配置。这一章把协议选择、端口参数、多账号策略讲透,因为九成的"收不到信"都出在这三步里。
3.1 IMAP 还是 POP3:先定邮件归属权
这两个协议的区别不在技术细节,而在"邮件最终归谁管"。POP3 的模型是把服务器上的邮件拉到本地,拉完可以选择删除服务器副本,本地是唯一真相;IMAP 的模型是本地只做缓存,服务器才是真相,任何一台设备上的已读、删除、文件夹变动都会同步回去。
对绿色版用户来说,这个选择尤其要慎重。如果你的使用场景是 U 盘随身、随时换机器,那 IMAP 更合适——换机器后重新同步即可,本地数据丢了也不致命。反过来,如果你有归档需求、邮箱容量有限、或者服务商对 IMAP 连接数有限制,那 POP3 更稳,邮件拉到本地就是你的资产,服务器只当传输通道。
我的习惯是混合用:主力工作邮箱走 IMAP,方便手机和电脑同步;历史归档类邮箱走 POP3,拉下来之后就断掉服务器连接,本地留一份完整副本。这样既不担心容量,也不担心换机器时丢东西。
有一点必须提前知道:POP3 在 foxmail 里默认的收信行为是"收取后保留服务器备份",这个选项如果被关掉,本地硬盘一坏就全没了。绿色版尤其要注意,因为整个目录都在移动介质上,摔一下、格式化一次都可能发生。所以在账号设置的收信选项里,把"在服务器上保留备份"勾上,除非你已经有独立的归档策略。
3.2 手动配置参数:端口、加密方式与鉴权
现在的邮箱服务商基本都能自动识别配置,但绿色版有时候自动配置会失败,原因多半是网络请求被拦截或者服务商的自动发现记录不完整。这时候手动填参数是最快的路子。下面这张表是通用对照,具体主机名换成你自己的服务商提供的地址。
| 协议 | 明文端口 | 加密端口 | 加密方式 | 常见用途 |
|---|---|---|---|---|
| SMTP | 25 | 465 | SSL/TLS | 发信,465 为隐式加密 |
| SMTP | 25 | 587 | STARTTLS | 发信,先明文后升级 |
| IMAP | 143 | 993 | SSL/TLS | 收信并保持多端同步 |
| POP3 | 110 | 995 | SSL/TLS | 收信并落地本地 |
填的时候有几个细节容易忽略。第一,用户名一般填完整邮箱地址,不是 @ 前面那一截,老版本客户端默认只填前缀,导致鉴权失败。第二,发信服务器必须勾选"需要身份验证",并且验证账号与收信账号一致,不勾这一项,发信时服务器会直接回 550 或 553。第三,加密方式选错比端口填错更常见——465 配 STARTTLS 会一直卡在握手阶段,993 配明文会直接连不上。
配完之后不要急着发正式邮件,先用客户端自带的"测试账户设置"跑一遍。这个功能会依次尝试连接收信和发信服务器,报错信息比收信失败时的提示具体得多。
如果测试通过但实际收信仍然失败,问题往往在网络层而不是配置层。下面这段脚本用来单独验证端口是否可达,排除客户端本身的干扰。
import socket import ssl def check_port(host: str, port: int, use_ssl: bool = True, timeout: float = 8.0): """检测指定主机的端口是否可建立 TCP / TLS 连接""" try: # 第一步:只做 TCP 握手,判断网络是否通 with socket.create_connection((host, port), timeout=timeout) as sock: if not use_ssl: return f"{host}:{port} TCP 可达(未加密)" # 第二步:在 TCP 之上做 TLS 握手,判断证书与加密套件是否匹配 ctx = ssl.create_default_context() with ctx.wrap_socket(sock, server_hostname=host) as tls: cert = tls.getpeercert() expire = cert.get("notAfter", "未知") return f"{host}:{port} TLS 握手成功,证书到期 {expire}" except socket.timeout: return f"{host}:{port} 连接超时,检查网络或防火墙" except ssl.SSLError as e: return f"{host}:{port} TLS 失败:{e}" except OSError as e: return f"{host}:{port} 连接失败:{e}" # 依次验证收信与发信端口,主机名换成服务商提供的地址 for h, p, s in [ ("imap.example.com", 993, True), ("smtp.example.com", 465, True), ("smtp.example.com", 587, False), ]: print(check_port(h, p, s))这段代码把问题切成两层:TCP 层和 TLS 层。超时说明网络或防火墙挡了,TLS 报错说明证书链或加密套件不匹配,最常见的原因是系统时间不准导致证书被判定为未生效或已过期——这是绿色版在 U 盘上跑时的经典玄学问题,主板电池没电、时区设错都会中招。代码里timeout设 8 秒,是因为部分网络在丢包时握手会拖很久,设太短会误判为不可达。server_hostname必须传,否则 SNI 信息缺失,共享 IP 的邮件服务器会返回错误的证书。
3.3 多账号、签名与发件人策略
绿色版在多账号场景下的价值才真正体现出来。安装版换机器要一个个重配,绿色版整个目录拷过去,四个账号的身份、签名、规则全在。但多账号配置有两个坑要提前处理。
第一个是发件人身份错乱。多个账号共存时,写信窗口的"发件人"下拉框默认选中的是上次使用的账号,手快的人经常用错身份发出去。解决办法是在每个账号下设置默认签名,签名里带上明确的身份标识,写信时一眼能看出来。签名文件放在账号目录下,跟着目录走,不会丢。
第二个是 SMTP 混用。有些服务商允许用 A 账号的凭据通过 B 账号的服务器发信,有些则严格校验 From 地址与登录账号一致,不一致直接拒信。表现是能收不能发,报错里带 "sender address rejected"。遇到这种情况不要怀疑密码,去账号设置里确认发信服务器与发件地址是不是同一个域,不一致就换成对应账号自己的发信服务器。
多账号还有一个隐性成本:本地存储会成倍增长。一个 IMAP 账号同步三年邮件轻松上到几个 GB,四个账号就是十几 GB,U 盘容量和拷贝速度都会成为瓶颈。这时候要么改用 POP3 只拉近期邮件,要么在账号设置里限制同步范围(比如只同步最近 90 天),把历史邮件留在服务器上按需检索。
4. 邮件本地化管理:存储结构、备份与跨机迁移
绿色版最大的卖点是把数据交到你自己手里,但如果不知道数据长什么样、存在哪、怎么备份,这个卖点就落不了地。这一章讲存储结构、备份策略和迁移步骤。
4.1 目录级备份:整包拷贝比导出更可靠
foxmail 的本地数据不是一堆散的 .eml 文件,而是一套带索引的存储结构。账号配置、邮件正文、附件、通讯录、规则、签名分门别类放在不同子目录里,索引文件负责把邮件 ID 和物理位置对应起来。这意味着你不能只挑几个文件拷走,必须整目录处理。
常见的错误做法是用客户端自带的"导出邮件"功能做备份。这个功能适合把某几个文件夹转成通用格式给别人,但不适合做全量备份——导出过程会丢失文件夹层级、已读状态、标签和规则关联,恢复的时候要一条条导回去,几万封邮件能干一整天。
正确的做法是目录级冷备份:完全退出程序,确认进程结束,然后把整个数据目录复制到备份位置。冷备份的关键在"冷"字,程序运行中拷贝,索引文件可能正被写入,拷出来的副本轻则提示修复,重则邮件丢失。
# 冷备份:先确认进程已退出,再整目录压缩成带时间戳的包 $src = "D:\PortableTools\Foxmail\Storage" $dstRoot = "E:\MailBackup" # 进程检查,有残留就直接退出,不冒险拷贝 $alive = Get-Process | Where-Object { $_.ProcessName -match 'foxmail' } if ($alive) { Write-Host "检测到 foxmail 仍在运行,请先完全退出再执行备份" -ForegroundColor Red exit 1 } if (-not (Test-Path $dstRoot)) { New-Item -ItemType Directory -Path $dstRoot | Out-Null } $stamp = Get-Date -Format "yyyyMMdd_HHmmss" $zip = Join-Path $dstRoot "mail_$stamp.zip" # Compress-Archive 对中文路径兼容性一般,路径含中文时优先用 7z 或 tar Compress-Archive -Path $src -DestinationPath $zip -CompressionLevel Optimal Write-Host "备份完成:$zip 大小 $([math]::Round((Get-Item $zip).Length/1MB,1)) MB"脚本里最值钱的是开头那三行进程检查。Compress-Archive在路径含中文或文件数超过几万时会有性能和兼容性问题,邮件量大的人换成 7z 命令行更稳,参数上加-mx=5平衡压缩率和耗时。备份文件名带秒级时间戳,是为了避免同一天多次备份互相覆盖——手工备份最容易犯的错就是"备份了三次,其实是同一个文件"。
注意:备份文件不要和数据目录放在同一块物理盘上。U 盘丢失、硬盘损坏这类事故,同盘备份等于没备份。
4.2 跨机迁移的完整步骤
迁移分两种情况:换机器和换盘符。前者是整目录搬到新电脑,后者只是路径变了。两种情况的操作顺序一样,但要注意的点不同。
完整步骤是:第一步,在旧机器上做一次冷备份,得到压缩包;第二步,在新机器上解压到一个固定路径,路径里不要有中文和空格,这一点很关键,部分老版本对非 ASCII 路径处理不干净,会出现附件打不开、皮肤加载失败;第三步,首次启动前先确认新路径可写,只读介质上启动会直接失败或者进入只读模式;第四步,启动后逐个账号检查收信是否正常,重点看 IMAP 账号会不会触发全量重新同步;第五步,确认无误后再删旧机器上的数据。
第四步是很多人忽略的。IMAP 账号的本地缓存和服务器之间靠 UID 对应,如果迁移过程中索引文件损坏,客户端会认为本地缓存全部失效,触发一次全量下载。几万封邮件重新拉一遍,快的几小时,慢的一整天,还会把服务器连接数占满。避免办法是迁移前先在旧机器上正常退出一次,让索引收尾,拷贝时确保索引文件和邮件目录一起走,不要分两次拷。
换盘符的情况更简单,但要留意快捷方式和最近使用记录。如果程序内部记录了绝对路径,换盘符后可能找不到数据目录,表现是启动后一片空白、账号全没了。这时候别慌,数据还在,去设置里把数据目录指回新路径即可。这也是我建议把便携目录固定在一个相对稳定的盘符下的原因,U 盘每次插拔盘符都可能变。
4.3 体积失控与索引重建
用久了之后,数据目录会以肉眼可见的速度膨胀。原因通常有三个:IMAP 缓存了全部历史邮件、附件被完整落盘、以及删除邮件后空间没有真正释放。
先看体积构成。进入数据目录按大小排序,哪个账号占得多一目了然。
# 按账号统计占用,找出体积异常的账号 $root = "D:\PortableTools\Foxmail\Storage" Get-ChildItem -Path $root -Directory | ForEach-Object { $size = (Get-ChildItem $_.FullName -Recurse -File -ErrorAction SilentlyContinue | Measure-Object Length -Sum).Sum [PSCustomObject]@{ 账号目录 = $_.Name 大小MB = [math]::Round($size / 1MB, 1) } } | Sort-Object 大小MB -Descending | Format-Table -AutoSize输出里排第一的账号如果远超其他,基本就是 IMAP 全量同步加附件堆积。处理手段有两个:一是把该账号的同步范围改成"最近 N 天",让客户端自己清理过旧缓存;二是在客户端里执行"压缩文件夹",把标记删除但未释放的空间收回来。后一个操作在 foxmail 里通常藏在文件夹右键菜单或者工具菜单下,不同版本位置略有差异,找不到就在设置里搜"压缩"。
索引重建是另一个常用操作。表现是邮件列表里出现空白条目、搜索搜不到明明存在的邮件、或者打开某封邮件提示读取失败。这类问题的根因是索引文件和邮件实体对不上,重建索引相当于让程序重新扫描一遍邮件目录、重建对应关系。重建耗时和邮件数量成正比,几万封邮件大概十几分钟,期间不要中断,中断了就得重来。
重建之前务必做一次备份。重建过程本身是安全的,但万一磁盘有坏道,扫描时读到损坏文件,程序可能把异常条目直接丢弃,这时候备份就是唯一的退路。
5. 避坑与排查:绿色版最容易翻车的五件事
这一章是我自己踩过的坑汇总,按"现象 → 原因 → 解决"写,遇到对应症状可以直接对号入座。
5.1 启动与权限类问题
现象一:双击程序没反应,或者一闪就退。
原因通常是两类:一是缺少运行库,绿色版为了减小体积没有打包 VC 运行库,新装的干净系统上就会缺;二是路径里有特殊字符或超长,程序加载资源时解析失败。排查办法是换个短路径(比如D:\FM)再试一次,能起来就是路径问题;起不来就去事件查看器看应用程序日志,缺哪个 DLL 一目了然。解决方式是根据日志补装对应的运行库,或者换一个打包更完整的版本。
现象二:能启动,但收信时提示"无法写入磁盘"。
原因是数据目录所在位置不可写。U 盘写保护开关被打开、目录被设成只读、或者杀毒软件把目录锁了,都会出这个提示。先看 U 盘侧面的物理开关,再看目录属性里的只读勾选,最后看杀软隔离记录。绿色版被误报是常事——打包方式不标准、缺少数字签名、加壳压缩,这几种特征在启发式扫描里都容易中招。处理办法是把整个便携目录加进杀软信任列表,而不是关掉杀软。
现象三:账号配置好了,重启后又变回空白。
原因是配置被写到了注册表或系统盘,而不是程序目录,换个路径启动就读不到了。表现是同一台机器上换个目录启动,账号就消失。验证方法是保存账号后看注册表HKCU\Software下有没有对应项。解决方式有两条路:接受"半便携",每次使用前把系统盘那份配置也带上;或者找找包里有没有提供便携化配置文件的说明,按说明指定数据路径。
5.2 收发与编码类问题
现象四:邮件正文全是乱码,或者中文变成问号。
根因是字符集识别错误。老邮件里 GBK 和 UTF-8 混用很普遍,客户端按错误的编码去解,就成了乱码。临时办法是在邮件查看界面切换编码(通常在右键菜单或"查看"菜单里),找到能正常显示的那个。根治要靠设置:把默认显示编码设成 UTF-8,同时把"无法识别时自动检测"打开。发信侧的乱码则多半是签名文件编码不对——签名是用某个编辑器存的,存成了 GBK,粘到 UTF-8 的邮件里就乱。用记事本另存为 UTF-8 再重新导入签名即可。
现象五:能收不能发,报错带 550 或 553。
按出现频率排三个原因:发信服务器没勾"需要身份验证";发件地址与登录账号不属于同一个域且服务商做了严格校验;附件超过服务商限制。第一种去账号设置里补勾选;第二种换用对应账号自己的发信服务器;第三种看报错里的具体字节数限制,把大附件拆包或者改用其他传输方式。还有一种少见但坑人的情况:本地系统时间偏差过大,导致 SMTP 的 TLS 握手被服务器拒绝,报错却显示成认证失败,去校准时间就好了。
提示:这五类问题里,前两类(启动、写入)占了实际求助量的一大半,先查路径和权限,再查网络和账号,顺序别反。
6. 进阶:用规则和快照把日常收信压到最低成本
前面讲的都是"能用",这一章讲"用得不烦"。绿色版真正拉开效率差距的地方,是规则和备份策略的组合。
6.1 过滤器规则的分层设计
规则不要按"每封邮件一条"来建,那样维护成本比手工整理还高。我的做法是三层:第一层按账号分,每个账号的来信先落到各自的主文件夹,避免所有邮件堆在收件箱;第二层按发件域分,把固定的几个来源(通知类、账单类、订阅类)各归各的文件夹,这一层用域名匹配,不要用完整地址,否则对方换个发信人你就漏了;第三层按关键词打标,优先级最低,只做补充。
规则顺序很重要,foxmail 的规则是从上往下匹配的,如果第一条就设置了"停止处理后续规则",后面的全废。所以把最具体、最需要精确归类的规则放上面,宽泛的放下面,最后留一条兜底规则。改完规则不要立刻全量应用,先拿一个新到的邮件验证一遍,确认落到了预期文件夹,再让它处理历史邮件。
6.2 只读便携盘加定期快照的习惯
我现在固定的用法是:便携目录放在一个专用 U 盘上,日常读写正常,但每周做一次完整快照到另一块盘,快照保留最近八份,超出就删最旧的。八份是个经验值——按周算能覆盖两个月,万一某次误删了重要邮件,翻回去还能找到上一周的状态。
快照脚本在 4.1 节基础上加一个保留策略就够了,用Get-ChildItem按时间排序,取前八份之外的全部删除。这里有个细节:删除前先校验压缩包能不能正常打开,损坏的包要单独标记出来,别当成有效快照留在那里占位——我吃过这个亏,等到真要恢复的时候才发现最近三份包全是半截的,原因是有一次备份时 U 盘被拔了。
从那以后,我每次做快照都强制走一遍"压缩 → 校验 → 再删旧包"的顺序,校验这一步只花几秒钟,但能保证留在目录里的每一份都是完整的。希望帮到你。
本文还有配套的精品资源,点击获取