跳到主要内容

Power Automate 中的电子邮件归档:使用 PDF4me 将一封 Outlook 邮件转换为 SharePoint 中的一个压缩 PDF/A 文件

· 阅读需 33 分钟
SEO and Content Writer

PDF4me 创建 PDF 这是一个 Power Automate 操作,可将 PDF 文件重写为 ISO 19005 归档标准。它位于 Outlook 流程的末尾,该流程会转换邮件正文、转换所有附件并合并它们,从而将电子邮件归档转换为 SharePoint 永久存储的单个压缩 PDF/A 文件。

搜索邮件归档服务,第一页都是卖存储服务的产品。Proofpoint、Mimecast、Barracuda、GoDaddy,它们都回答了“邮件会保存在哪里,保存多久”这个问题。但没有一家公司回答真正决定邮件归档是否值得保留的问题: 它是什么格式的? 邮箱导出文件只有在仍然可以打开的情况下才能读取。这种流程首先将归档视为格式问题,其次才是存储问题,这与结果页面上的所有其他流程的顺序正好相反。

流程概览
1. When a new email arrives (V3)
Outlook trigger. Include Attachments Yes, Only with Attachments Yes, Folder Inbox.
2. Initialize variable
Name email, Type Array. The buffer every PDF gets appended to, in order.
3. Convert to PDF
PDF4me Connect. Turns the HTML message body into page 1 of the archive.
4. Append to array variable
Pushes the converted body onto the email array before the loop starts.
5. Apply to each
Loops the trigger Attachments collection. Two actions inside.
6. Convert to PDF 2
Converts each attachment using base64ToBinary on contentBytes.
7. Append to array variable 2
Pushes each converted attachment onto the same email array.
8. Merge multiple PDF files
PDF4me Connect. docContent is the whole email array. One PDF out.
9. PDF - Compress
Optimize Profile Web. Runs before the standard is applied, never after.
10. PDF - Create PdfA
Compliance PdfA2b. This is the action that makes it an archive.
11. Create file
SharePoint writes EmailArchive.pdf into /Shared Documents/EmailArchive.
简短版

一封邮件到达受监控的邮箱。Power Automate 会将邮件正文转换为 PDF,将所有附件转换为 PDF,并按邮件到达顺序合并成一个文档,然后进行压缩,再转换为 PDF/A-2b 格式,最后将结果归档到 SharePoint 中。邮件正文位于第一页,附件紧随其后。整个过程共执行 11 个操作,平均每封邮件耗时约 56 秒,最终生成的文档即使在邮箱关闭很久之后仍然可以正常打开。

基于原因的问答

为什么要把主体和附件合并在一起,而不是分开存储? 因为只有结合上下文和物品才能产生意义。物品本身说明了是谁寄的以及寄送的原因,而附件则是物品本身。如果将它们分别存储为单独的文件,之后再去重构信息就成了一项小型研究项目。而一个PDF文件就能完整地保存所有证据。

为什么PDF/A格式对电子邮件来说很重要? 电子邮件的保留期限很长,通常为七年,有时甚至是永久的。普通的PDF文件可能会引用文件外部的字体和颜色配置文件。 PDF/A 禁止这样做,因此渲染页面所需的一切都会随之迁移。这正是保留策略中“在保留期内可读”的要求。

为什么要在PDF/A转换之前进行压缩? 原因有二,而且都指向同一个方向。PDF/A 转换会嵌入字体和配置文件,因此会增加文件大小;先压缩可以抵消这种影响。此外,压缩会重写图像流,所以对刚刚通过认证的文件进行压缩可能会破坏您付费获得的合规性。因此,请先压缩,再进行认证。

为什么使用数组变量而不是链式执行操作? 因为附件数量在邮件到达之前是未知的。数组是唯一能够容纳一个邮件正文和 N 个附件并保持其顺序的结构。合并操作一次性接受整个数组,因此无论最终有多少个文件,循环都只需执行两次操作。


您将获得

输入: 一封带有一个或多个附件的 Outlook 电子邮件。 输出: SharePoint 中有一个压缩的 PDF/A-2b 文件,其中包含邮件正文(第一页)以及所有附件(按顺序排列)。

Outlook 网页版显示源邮件标题为“PDF4me Sales 修复后测试合成邮件 2 流程验证”,附件为 demo-attachment.pdf,附件预览显示文本“演示测试文档,非真实数据”。

触发流程的消息:简短的正文和一个 PDF 附件。

SharePoint 文档库显示了 EmailArchive 文件夹,其中包含 EmailArchive.pdf 文件,该文件大约在一分钟前由 Pdf4me Flow 帐户修改。

EmailArchive.pdf 由流程帐户在邮件到达后约一分钟内写入。


你需要什么

  • 动力自动化打开 Power Automate基于标准层连接器的云流。无需高级套餐,也无需网关。
  • Office 365 Outlook 邮箱 您可以进行监控。共享邮箱可行,通常是存档的更佳选择。
  • PDF4me API密钥获取您的 API 密钥此流程使用两个 PDF4me 连接:PDF4me Connect 和 PDF4me PDF。一个密钥即可同时授权这两个连接。
  • 包含存档文件夹的 SharePoint 网站在构建之前创建它,以便文件夹选择器有东西可以指向。
  • 附件示例demo-attachment.pdf随测试邮件一起发送的单页PDF文件。
  • 已完成的档案电子邮件存档输出.pdf两页,PDF/A-2b,正是流程生成的内容。

请先下载这两个文件。 将附件发送给自己,然后将结果与最终生成的压缩文件进行比较。打开文档属性,您应该会看到 PDF/A-2b 标识。了解正确的输出格式是判断您的运行是否真正成功的最快方法。


流程概览

  1. 当收到新邮件时(V3) (Outlook 触发器)包含附件。
  2. 初始化变量 email类型为数组。
  3. 转换为 PDF 在 HTML 邮件正文中(PDF4me Connect)。
  4. 追加到数组变量 推动改装后的车身。
  5. 适用于每个 扳机上方 Attachments
  6. 转换为 PDF 2 每个附件的 contentBytes
  7. 追加到数组变量 2 推送每个转换后的附件。
  8. 将多个 PDF 文件合并成一个 PDF 文件 (PDF4me Connect)。
  9. PDF压缩 使用优化配置文件 Web
  10. PDF - 创建 PDF 合规 PdfA2b
  11. 创建文件 (SharePoint) /Shared Documents/EmailArchive

完整流程概述

Power Automate 运行历史记录显示以下 11 个操作按顺序成功完成:收到新邮件时 V3(耗时 0.2 秒)、初始化变量(耗时 0 秒)、转换为 PDF(耗时 10 秒)、追加到数组变量(耗时 0 秒)、应用到每个操作(耗时 11 秒,其中包含转换为 PDF 2 和追加到数组变量 2)、合并多个 PDF 文件(耗时 10 秒)、PDF 压缩(耗时 11 秒)、PDF 创建(耗时 11 秒)以及 SharePoint 创建文件(耗时 3 秒)。

整个运行过程中,四项文档操作耗时十到十一秒,占据了大部分时间。对于包含一个附件的邮件,预算大约需要五十六秒;每增加一个附件,大约需要增加十秒。


步骤 1:如何触发 Outlook 传入邮件的流程?

目前为止的流程: 目前还没有什么,这是触发点。

触发器决定哪些内容会被存档,因此务必谨慎设置。它的两个高级参数才是真正起作用的。

  1. 创建一个 自动化云流 并挑选 Office 365 Outlook > 当收到新邮件时(V3)
  2. 打开 高级参数 并进行配置:
    • [email protected]
    • 包含附件Yes
    • 重要性Any
    • 仅带附件Yes
    • 文件夹Inbox

Outlook 触发器配置

Power Automate V3 触发面板显示九个高级参数中的五个:设置为在 ynoox.ch 进行测试,包含附件(是),重要性(任意),仅包含附件(是),文件夹为收件箱,并已连接到 Office 365 Outlook。

“包含附件”是人们经常忽略的选项。如果关闭此选项,循环仍然会运行,但每个附件的内容都将为空。

提示。 包含附件仅带附件 听起来像是同一个设置,但实际上并非如此。第一个设置控制附件字节是否随触发有效负载一起下载。第二个设置控制流程是否触发。几乎总是需要将第一个设置设为“是”。 Yes是否需要第二个选项,取决于你是否认为不带附件的电子邮件值得存档。


步骤 2:为什么流程需要一个数组变量?

目前为止的流程: Outlook触发器。

直到收到邮件时,附件的数量才知道,因此流程需要某个地方来累积未知数量的 PDF 文件,同时保持它们的顺序。

  1. 添加 变量 > 初始化变量
  2. 配置
    • 姓名email
    • 类型Array
    • 价值留空

初始化变量配置

在 Power Automate 中,初始化变量操作面板,名称设置为电子邮件,类型设置为数组,值字段留空。

值保持为空。正文随后会被追加到循环之前,因此它会出现在第一页。


步骤 3:如何将电子邮件正文转换为 PDF?

目前为止的流程: Outlook 触发器加上初始化变量。

Outlook 触发器会将邮件正文以 HTML 格式传递。PDF4me Convert to PDF 会将其渲染成 PDF 格式,这就是为什么文件名会包含一个 .pdf 文件。 .html 即使返回的是 PDF 文件,也需要扩展名。

  1. 添加 转换为 PDFPDF4me Connect 联系。
  2. 配置
    • 内容: 这 Body 令牌,解析为 triggerOutputs()?['body/body']
    • 文件名email-body.html

转换为 PDF 配置

PDF4me“转换为PDF”操作面板,其“正文”标记已从Outlook触发器映射,表达式为“triggerOutputs body slash body”,文件名设置为“email-body.html”,并已连接到PDF4me Connect。

文件名中的扩展名告诉转换器它接收到的文件类型。输入的是 HTML 文件,所以即使输出是 PDF 文件,email-body.html 也是正确的。


步骤 4:如何将邮件正文放在第一页?

目前为止的流程: Outlook触发器,初始化变量,转换为PDF。

合并文档中的顺序就是元素进入数组的顺序。将主体内容添加到循环之前,就是确保它始终位于最前面的机制。

  1. 添加 变量 > 追加到数组变量
  2. 配置
    • 姓名email
    • 价值: 这 文件内容 来自令牌 转换为 PDF,其结果为 body('Convert_to_PDF')

追加到数组变量配置

Power Automate 的“追加到数组变量”操作,名称设置为电子邮件,文件内容标记来自“转换为 PDF”,显示表达式主体“将下划线转换为下划线 PDF”。

值必须是文件内容标记,即 body('Convert_to_PDF')。此处填写其他值是导致后续合并失败的最常见原因。

这个字段正是典型的故障点。 该值必须是 文件内容 转换操作的输出。如果选择不同的标记,或者将其包装在返回文件内容以外的值的表达式中,则数组将填充错误的形状,并且 合并多个PDF文件 要么直接失败,要么返回一个无法打开的 PDF 文件。运行历史记录在合并步骤之前一直保持绿色,因此错误是在出错很久之后才出现的。


步骤 5:如何将每个电子邮件附件转换为 PDF?

目前为止的流程: Outlook 触发器,初始化变量,转换为 PDF,追加到数组变量。

遍历附件集合一次,循环内执行两个操作。这就是全部流程,即使附件数量增加,流程也不会改变。

  1. 添加 控制 > 适用于每个
  2. 从之前的步骤中选择一个输出。: 这 Attachments 令牌,解析为 triggerBody()?['Attachments']

应用于每个配置

在 Power Automate 中,选中“附件”标记,将“应用到每个操作”显示为表达式 triggerBody Attachments,展开的循环包含“转换为 PDF 2”和“追加到数组变量 2”。

循环内有两个操作,无论附件是一个还是二十个,这个结论都成立。

现在将第一个动作添加到循环中。

  1. 添加 转换为 PDF (PDF4me Connect)在循环内部。Power Automate 将其命名为 转换为 PDF 2
  2. 配置
    • 文件内容:表达式 base64ToBinary(items('Apply_to_each')?['contentBytes'])
    • 文件名: 这 name 附件中的令牌
在“应用到每个”循环中,使用 PDF4me 的“转换为 PDF 2”操作面板,将“文件内容”设置为表达式 base64ToBinary,并将“应用到每个”的 contentBytes 映射到附件名称标记。

Outlook 会以 base64 编码方式传输附件。base64ToBinary 函数会将 contentBytes 转换回转换器可以读取的文件格式。

然后是循环内的第二个操作。

  1. 添加 追加到数组变量 在循环内部,名为 追加到数组变量 2
  2. 配置
    • 姓名email
    • 价值: 这 文件内容 来自令牌 转换为 PDF 2,其结果为 body('Convert_to_PDF_2')
Power Automate 的“追加到数组变量 2”操作在循环内执行,名称设置为电子邮件,文件内容标记来自“转换为 PDF 2”,显示表达式主体“将下划线转换为下划线 PDF 下划线 2”。

与步骤 4 相同的数组和模式。每次循环都会向最终存档中添加一个页面范围。

两个循环表达式

场地表达它的作用
适用于每个 输入triggerBody()?['Attachments']触发消息中的附件集合。
转换为 PDF 2 文件内容base64ToBinary(items('Apply_to_each')?['contentBytes'])将当前附件的 base64 有效载荷解码为二进制数据。
转换为 PDF 2 文件名附件 name 令牌转换过程中保留原始文件名。
追加到数组变量 2 价值body('Convert_to_PDF_2')转换后的PDF文件附加到同一位置 email 大批。

base64ToBinaryitems() 两者都来自 工作流定义语言函数参考这是表达式字段可接受内容的权威列表。


步骤 6:如何将数量不明的 PDF 文件合并成一个 PDF 文件?

目前为止的流程: 所有内容都通过“应用到每个”循环进行处理。

当循环结束时, email 数组包含正文 PDF 文件以及所有附件 PDF 文件。合并操作会在一次调用中处理整个数组。

  1. 添加 将多个 PDF 文件合并成一个 PDF 文件PDF4me Connect循环结束后。
  2. 配置
    • 文档内容@variables('email')
    • 输出文件名EmailArchive.pdf

代码视图使形状一目了然:

{
"type": "OpenApiConnection",
"inputs": {
"parameters": {
"body/docContent": "@variables('email')",
"body/document/Name": "EmailArchive.pdf"
},
"host": {
"apiId": "/providers/Microsoft.PowerApps/apis/shared_pdf4meconnect",
"connection": "shared_pdf4meconnect",
"operationId": "Merge_V1"
}
},
"runAfter": {
"Apply_to_each": [
"Succeeded"
]
}
}

合并操作代码视图

Power Automate 代码视图,显示“合并多个 PDF 文件”操作,其中 body docContent 设置为表达式变量 email,body document Name 设置为 EmailArchive.pdf,operationId 为 Merge V1,runAfter 设置为每个成功操作。

runAfter Apply_to_each Succeeded 保证合并操作会等待每个附件完成转换。

提示。 合并操作只需对整个数组进行一次调用,而不是对每个文件都进行一次调用。这就是为什么添加附件时运行时间几乎不变的原因。一封包含 15 个附件的电子邮件的开销在于循环内的 15 次转换,而不是 15 次合并操作。


步骤 7:如何使电子邮件存档符合 PDF/A 标准?

目前为止的流程: 所有操作均通过 Merge 完成。

按此顺序,采取以下两项行动: PDF4me PDF 联系。这种秩序并非表面功夫。

  1. 添加 PDF压缩
    • 文件内容合并后的文件内容
    • 文件名: 这 headers/FileName 从上一次操作继承的令牌
    • 优化配置文件Web
  2. 添加 PDF - 创建 PDF
    • 文件内容压缩文件的内容
    • 文件名: 这 headers/FileName 令牌
    • 遵守PdfA2b
    • 允许升级Yes
    • 允许降级Yes

压缩并创建 PDF 参数

行动范围此处使用的值它控制着什么
PDF压缩优化配置文件Web在文件大小和清晰度之间取得平衡。如果附件是需要仔细阅读的扫描件,请使用更高清晰度的配置文件。
PDF - 创建 PDF遵守PdfA2bISO 19005-2 B 级。保证视觉再现,这是大多数保存政策所指的级别。
PDF - 创建 PDF允许升级Yes当请求的操作无法执行时,允许操作执行到更高的级别。
PDF - 创建 PDF允许降级Yes让它降级而不是直接失败,通常是在字体无法嵌入时。
PDF4me PDF 压缩操作面板,文件内容和文件名已从上一个操作映射,优化配置文件设置为 Web,并已连接到 PDF4me PDF。

压缩操作在合并文档上进行,在进行任何认证之前完成。

PDF4me PDF 创建 PDF 操作面板,文件内容和文件名映射自“压缩”,合规性设置为 PdfA2b,允许升级为“是”,允许降级为“是”。

创建 PDF 是处理文档的最后一个操作,这才是它应该在的位置。


步骤 8:完成的存档存储在哪里?

目前为止的流程: 所有操作均通过 Create PdfA 完成。

最后一步操作是将认证文件写入 SharePoint。

  1. 添加 SharePoint > 创建文件
  2. 配置
    • 网站地址PDF4me Sharepoints - https://ynoox1.sharepoint.com/sites/PDF4meSharepoints
    • 文件夹路径/Shared Documents/EmailArchive
    • 文件名EmailArchive.pdf
    • 文件内容: 这 文件内容 来自令牌 PDF - 创建 PDF,其结果为 body('PDF_-_Create_PdfA')

SharePoint 创建文件配置

SharePoint 创建文件操作面板,站点地址设置为 PDF4me SharePoint,文件夹路径为 /Shared Documents/EmailArchive,文件名为 EmailArchive.pdf,文件内容映射自 PDF Create PdfA,显示表达式正文 PDF Create PdfA

文件内容解析为 body('PDF_-_Create_PdfA')。如果改用压缩方式,则可以得到一个有效的 PDF 文件,而不是一个压缩文件。

上线前请修改此设置。 此处的文件名是静态文本。 EmailArchive.pdf完全按照捕获的内容来写。这对于测试来说没问题,但对于归档来说就不对了:每封邮件都写入同一个名称,因此每封新邮件要么覆盖之前的归档邮件,要么与之冲突。应该将其替换为每封邮件唯一的名称。时间戳就可以: concat('EmailArchive-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf')邮件主题也是如此。只保留一个文件的归档文件不能称之为归档文件。


运行流程并验证

向监控地址发送至少带有一个附件的测试邮件,然后检查三件事而不是一件事。

  1. 运行历史记录。 所有 11 个操作均显示绿色,并且“应用到每个操作”都显示了正确的迭代次数。捕获的运行结果显示 1 of 1 适用于单附件电子邮件。
  2. SharePoint文件夹。 EmailArchive.pdf 存在于 /Shared Documents/EmailArchive,其中“修改者”显示流程的帐户。
  3. 文件本身。 这是很多人会忽略的步骤。打开文档属性,确认 PDF/A 声明确实存在。

捕获的运行生成的归档文件大小为 32,088 字节。 两页:第一页是邮件正文,第二页是附件。其嵌入的 XMP 元数据声明: pdfaid:part 作为 2pdfaid:conformance 作为 B这就是 PDF/A-2b 文件的内部结构。如果您的输出文件可以正常打开,但没有包含此类声明,则“创建文件”操作几乎肯定是从错误的上游操作读取的。

你实际建造了什么? 邮件归档流程会在无需任何人为操作的情况下,生成一份独立、符合标准的邮件及其所有附件的记录。邮箱保持不变。归档文件是一个独立的文档,其格式设计为即使在数十年后仍可读取,而这正是邮箱导出和存储层级所无法提供的。


无需重建即可添加的常见变体

将所有邮件都存档,而不仅仅是带有附件的邮件。

仅带附件循环只运行了零次,合并操作接收一个包含一个元素的数组,因此归档文件只剩下正文。

将存档命名为消息名称

使用触发器的主题和接收时间(而非仅使用时间戳)构建文件名。首先移除 SharePoint 拒绝的字符,否则创建文件操作会因主题行中的标点符号而失败。

验证标准,而不是想当然。

添加 验证 PDF 在创建 PDF 并根据结果进行分支之后,故障会显示在运行历史记录中,而不是在三年后的审计中才被发现。

按发件人或日期分类到文件夹中

根据触发器的“发件人”地址或接收日期生成文件夹路径。一个流程无需任何条件即可处理整个文件夹树。

与通常方法相比,这种方法有何不同?

比较另一种选择保留了什么格式保证自动运行
Outlook 存档按钮与此流程该邮件被移至同一邮箱中的另一个文件夹。没有。它仍然是 Exchange 中的邮件项目。不,得有人点击才行。
日志设备与此流程 (Mimecast,Proofpoint)所有东西都存放在供应商商店里。供应商自己的格式,可通过他们的产品读取。是的,需要支付许可费。
Microsoft 365 存档与此流程同样大小的字节,使用更便宜的存储层。无。文件未作任何更改。是的,但这是存储,不是格式。
这种流程正文及附件,合并为一个文档PDF/A-2b,独立式是的,使用标准连接器。

关键的区别在于:前三个问题回答了邮件的存储位置。只有最后一个问题回答了当生成邮件的软件消失后,邮件是否还能正确显示。


常见问题

什么是电子邮件归档?

电子邮件归档是指将邮件保存到单独的、持久的存储空间中,使其免受邮箱清理、员工离职和数据保留期限的影响。大多数产品将其定义为一种存储问题:将邮件复制到安全的地方并建立索引以便于搜索。

这个定义并不完整。只有当邮件存档仍然可以打开时,它才有用;邮件也必须与其所在的系统关联。将邮件及其附件转换为固定的文档格式,才能将副本转化为正式记录。

电子邮件归档是如何工作的?

传统上,日志设备位于邮件服务器旁边,接收所有内容的副本,并将其存储在具有自己搜索界面的专有存储库中。

此流程的工作方式不同。邮件到达时触发一个事件,正文和附件被转换为 PDF 格式,按顺序合并成一个文档,压缩后再转换为 PDF/A-2b 格式,最后写入 SharePoint。此流程无需任何专用设备或专有存储,输出文件无需您的软件即可被任何人打开。

如何将电子邮件归档到 SharePoint?

指向 Office 365 Outlook 在邮箱触发,在流程中执行文档工作,并结束。 SharePoint 创建文件 指向目标文件夹。它的形状就是这样。

真正值得做好的是你写的内容。保存 .msg 或者 .eml 从技术上讲,将文件归档到文档库相当于归档到 SharePoint,但最终生成的是一个需要邮件客户端才能访问的邮件项目。PDF/A 文件是一种 SharePoint 可以像处理其他文档一样对其进行索引、预览和应用保留标签的文档。

可以在 SharePoint 中保存电子邮件吗?

是的,可以通过多种方式实现,但它们并不等同。您可以将邮件从 Outlook 拖到同步库中,也可以对单封邮件使用“保存到 OneDrive”功能,或者像本流程一样使用 Power Automate 实现自动化。

手动路由会将邮件以其原始格式保存,因此附件会嵌入到只有邮件客户端才能打开的文件中。自动路由允许您选择输出格式,因此,如果目的是保存邮件而非方便操作,则应优先选择自动路由。

邮件归档的最佳实践是什么?

第四点无论使用何种工具都适用。邮件到达后立即归档,而不是按计划归档,这样就不会依赖于某人的记忆。邮件正文及其附件应保持在一起,因为将它们分开会破坏邮件作为证据的上下文。使用有规范支持的格式,实际上指的是 PDF/A。并且为每个归档项目指定一个唯一的名称,因为覆盖前一天文件的归档实际上是一个多了步骤的单一文档。

这里的流程按结构遵循前三个步骤。第四个步骤是上线前必须修改的,与捕获的配置有所不同。


故障排除

合并失败,或者生成的 PDF 文件无法打开。

检查 价值 在“追加数组变量”操作中,每个字段都必须是 文件内容 从其 Convert 操作中获取令牌,解析为 body('转换为PDF')body('转换为PDF_2')任何其他标记都会以错误的形状填充数组,并且 Merge 之前的每个操作仍然会报告成功。

附件将转换为空白或零字节的PDF文件。

包含附件 设置为 触发后,附件集合仍然包含名称和元数据,因此循环迭代的次数正确,但是 内容字节 为空,没有东西需要转换。

SharePoint 中只会显示一个存档文件。

创建文件 文件名 是静态文本 电子邮件存档.pdf每次运行都针对同一个名称。按照步骤 8 中的说明,通过时间戳或主题行使每个消息的名称唯一。

输出文件可以正常打开,但格式不是 PDF/A。

创建文件正在读取 PDF压缩 而不是 PDF - 创建 PDF结果生成了一个更小、完全有效的 PDF 文件,但它未能通过所有合规性检查,而且运行历史记录中没有任何异常。请确认表达式是否正确。 body('PDF_-_Create_PdfA')


相关阅读

本文介绍电子邮件自动化流程中的归档格式部分。接下来的三篇教程将介绍其他相关部分:


后续步骤

存储决定了邮件的存放位置。格式决定了邮件是否还能被他人阅读。这个流程解决了第二个问题,而这个问题在搜索结果的第一页上根本没人问。